将 Observable 链接到组件的问题

Problem of linking an Observable to a component

首先,请原谅我的英语,我正在使用翻译器。

我在将我相信服务的可观察对象链接到单组件变量时遇到问题。这是代码:

servicio1.ts

         private myObservable$ = new Subject<myInterface>();
            constructor() { 
              this.crearObservable$();
            }

         nuevoObjeto(dato1: string, dato2: string): myInterface {
              return {
              datoUno: dato1,
              datoDos: dato2,
             };
         }
    
         crearObservable$() {
              let observableAUX: myInterface;
              observableAUX = this.nuevoUsuario("Dato 1", "Dato 2");
              this.myObservable$.next(observableAUX);
         }

         getObservable$(): Observable<myInterface> {
              return this.myObservable$.asObservable();
         }

componente1.ts

         datos: Observable<myInterface>;
         datos: Usuario;

         ngOnInit(): void {
            this.datos$ = this.servicio1.getObservable$();
            this.datos$.subscribe(datos => this.datos = datos);
            console.log(this.datos);
         } 

当然服务和接口都没有引入。

但由于某些原因 this.data 没有得到值。

非常感谢你的帮助。

提前致谢。

根据您获得的信息,您可能遇到了异步问题。需要注意两件事:

  1. 像这样保存 Observable 值的快照是可以的,但如果你关心在值之后立即访问,它可能不起作用,因为一旦你 subscribe 你正在等待让 Observable 发出,这可能在您尝试使用快照后发生(在您的示例中,this.datos 变量)

  2. 如果你想访问 Observable 内部的值,在订阅回调函数中访问它,像这样:

      ngOnInit(): void {
            this.datos$ = this.servicio1.getObservable$();
            this.datos$.subscribe(datos => {
                this.datos = datos
                console.log(this.datos)
            });
         } 

编辑:看起来问题可能出在 Observable 本身。您正在 return 使用 asObservable() 观察 Observable,这会创建一个新的 Observable,如图 here

尝试 return 按原样使用 Observable(return 没有 asObservable 的 Subject 是可以的,毕竟 subject 是一种特殊类型的 Observable)

问题是我必须在广播前订阅,所以我只需要在订阅后调用 createObservable$():

ngOnInit(): void {
    this.datos$ = this.servicio1.getObservable$();
    this.datos$.subscribe(datos => this.datos = datos);
    console.log(this.datos);
    this.servicio1.crearObservable$();
}