tengo servicio:
export class ConfigService { private _config: BehaviorSubject<object> = new BehaviorSubject(null); public config: Observable<object> = this._config.asObservable(); constructor(private api: APIService) { this.loadConfigs(); } loadConfigs() { this.api.get('/configs').subscribe( res => this._config.next(res) ); } }Tratando de llamar a esto desde el componente:
... Observable.forkJoin([someService.config]) .subscribe( res => console.log(res) ) //not working someService.config.subscribe( res => console.log(res) ) // working ... ¿Cómo puedo usar Observable.forkJoin con la config de la variable Observable ?
Necesito almacenar configuraciones en servicio y esperar a que no se enciendan y otros soliciten que no terminen para detener el cargador.
Como está utilizando BehaviorSubject , debe saber que puede llamar a next() y complete() manualmente.
El operador forkJoin() emite solo cuando todos sus Observables de origen han emitido al menos un valor y todos se han completado. Dado que está utilizando un Sujeto y el método asObservable , la fuente Observable nunca se completa y, por lo tanto, el operador forkJoin nunca emite nada.
Por cierto, no tiene mucho sentido usar forkJoin con solo una fuente Observable. También puede echar un vistazo a los operadores zip() o combineLatest() que son similares y tal vez sea lo que necesita.
Dos preguntas muy similares: