Angular 将可观察对象链接到组件的问题

Angular 将可观察对象链接到组件的问题,angular,observable,Angular,Observable,首先,请原谅我的英语,我在用翻译 我在将我相信的服务中的可观察变量与一个组件变量联系起来时遇到了一个问题。代码如下: 服务1.ts private myObservable$ = new Subject<myInterface>(); constructor() { this.crearObservable$(); } nuevoObjeto(dato1: string

首先,请原谅我的英语,我在用翻译

我在将我相信的服务中的可观察变量与一个组件变量联系起来时遇到了一个问题。代码如下:

服务1.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();
         }
private myObservable$=新主题();
构造函数(){
此.crearObservable$();
}
nuevoObjeto(dato1:string,dato2:string):myInterface{
返回{
datoUno:dato1,
datoDos:dato2,
};
}
crearObservable$(){
让ObservaleAux:myInterface;
observableAUX=这个新的数据(“数据1”,“数据2”);
this.myObservable$.next(observableAUX);
}
getObservable$():可观察{
返回此.myObservable$.asObservable();
}
组件1.ts

         datos: Observable<myInterface>;
         datos: Usuario;

         ngOnInit(): void {
            this.datos$ = this.servicio1.getObservable$();
            this.datos$.subscribe(datos => this.datos = datos);
            console.log(this.datos);
         } 
datos:可见;
拿督:乌萨里奥;
ngOnInit():void{
this.datos$=this.servicio1.getObservable$();
this.datos$.subscribe(datos=>this.datos=datos);
console.log(this.datos);
} 
当然,服务和接口都不需要导入

但由于某些原因,此.data无法获取值

谢谢你的帮助


提前感谢。

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

  • 像这样保存可观察值的快照是可以的,但是如果您关心在值之后立即访问,那么它可能不起作用,因为您
    subscribe
    正在等待可观察值发出,并且在尝试使用快照(在您的示例中是this.datos变量)后可能会发生这种情况

  • 如果要访问Observable中的值,请在subscribe回调函数中访问它,如下所示:

  • ngOnInit():void{
    this.datos$=this.servicio1.getObservable$();
    此.datos$.subscribe(datos=>{
    this.datos=datos
    console.log(this.datos)
    });
    
    }
    根据您获得的信息,您可能会遇到异步问题。有两件事需要注意:

  • 像这样保存可观察值的快照是可以的,但是如果您关心在值之后立即访问,那么它可能不起作用,因为您
    subscribe
    正在等待可观察值发出,并且在尝试使用快照(在您的示例中是this.datos变量)后可能会发生这种情况

  • 如果要访问Observable中的值,请在subscribe回调函数中访问它,如下所示:

  • ngOnInit():void{
    this.datos$=this.servicio1.getObservable$();
    此.datos$.subscribe(datos=>{
    this.datos=datos
    console.log(this.datos)
    });
    
    }
    问题是我必须在广播前订阅,所以我只需在订阅后调用createObservable$():

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

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

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

    尝试在订阅中登录。观测值不是同步的。嗨,欢迎来到stackoverflow。问题必须用英语,如果你觉得用西班牙语提问更好,你可以用西班牙语的stackoverflow。@Gecko那不是真的。可观察对象可以是异步的。尝试在订阅中登录。观测值不是同步的。嗨,欢迎来到stackoverflow。问题必须用英语,如果你觉得用西班牙语提问更好,你可以用西班牙语的stackoverflow。@Gecko那不是真的。可观察对象可以是异步的。即使您稍后尝试使用一个按钮事件查看this.data变量,它也不起作用。您是否检查了是否实际获得了该值?您可以使用tap进行检查:this.datos$=this.servicio1.getObservable$().pipe(tap(console.log));为了进行测试,我在service1.ts中手动输入值,使observableAUX=this.newUser(“数据1”、“数据2”);签出我的编辑未收到任何内容即使您稍后尝试使用一键事件查看this.data变量,它也不起作用。是否检查是否实际获得了该值?您可以使用tap进行检查:this.datos$=this.servicio1.getObservable$().pipe(tap(console.log));为了进行测试,我在service1.ts中手动输入值,使observableAUX=this.newUser(“数据1”、“数据2”);检查我的编辑,但没有收到任何信息