typescript - Angular | Crear un Observable no funciona
En Angular6, estoy creando un servicio Injectable. Estoy tratando de inicializar un Observable en el constructor, vea el código simplificado a continuación.
Problema: La función de devolución de llamada de Observable.create nunca se ejecuta, y no hay errores. ¿Por qué console.log('authObserver creado!') nunca se llama?
import { Observable, Observer } from 'rxjs';
@Injectable()
export class UserLoginService implements OnInit{
authObserver:Observer;
authObservable:Observable;
constructor() {
this.authObservable = Observable.create((observer: Observer) => {
this.authObserver = observer;
console.log('authObserver created!')
});
}
}
randomCallbackFunction(){
this.authObserver.next("Button has been clicked");
}
Respuesta #1
En tu código, no veo que ocurra ninguna suscripción. Los observables solo funcionan después de la suscripción. Intenta esto
this.authObservable = Observable.create((observer: Observer) => {
this.authObserver = observer;
console.log('authObserver created!')
});
this.authObservable.subscribe()
Puedes verlo funcionando aquí
Respuesta #2
Necesitas suscribirte y vigilar correctamente para impulsar nuevos valores a través de lo siguiente:
/*
Create an observable that emits 'Hello' and 'World' on
subscription.
*/
const hello = Rx.Observable.create(function(observer) {
observer.next('Hello');
observer.next('World');
});
//output: 'Hello'...'World'
const subscribe = hello.subscribe(val => console.log(val));
Echa un vistazo a este Fiddle.
