Esta es la respuesta más válida que te podemos dar, pero primero obsérvala detenidamente y valora si se puede adaptar a tu trabajo.
Solución:
con este codigo
export class TopbarComponent
companyCount;
constructor (private dataService: DataService)
dataService.getCompaniesCount().subscribe(res => this.companyCount = res.count); //doesn't work
dataService.getCompaniesCount().subscribe(res => console.log(res.count)); //works
res => this.companyCount = res.count
no se ejecuta inmediatamente. Cuando getCompaniesCount()
realiza una solicitud a un servidor, se necesita un largo tiempo hasta que llega la respuesta y el observable llama a la función pasada a subscribe(...)
(res => this.companyCount = res.count
).
La ejecución del constructor, ngOnInit
, ngAfterViewInit()
y muchas otras cosas habrán sucedido antes de que llegue la respuesta.
Puedes ver
subscribe(res => this.companyCount = res.count)
como registrar un controlador de eventos que se llama cuando ocurre un evento.
Todo el código que depende de los datos disponibles debe estar correctamente encadenado.
La forma más sencilla es pasar al código en subscribe(...)
constructor (private dataService: DataService)
dataService.getCompaniesCount().subscribe(res =>
this.companyCount = res.count);
// more code that depends on `res.count` being set goes here
);
dataService.getCompaniesCount().subscribe(res => console.log(res.count)); //works
Recuerda compartir esta noticia si te fue útil.