将 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 没有得到值。
非常感谢你的帮助。
提前致谢。
根据您获得的信息,您可能遇到了异步问题。需要注意两件事:
像这样保存 Observable 值的快照是可以的,但如果你关心在值之后立即访问,它可能不起作用,因为一旦你 subscribe
你正在等待让 Observable 发出,这可能在您尝试使用快照后发生(在您的示例中,this.datos 变量)
如果你想访问 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$();
}
首先,请原谅我的英语,我正在使用翻译器。
我在将我相信服务的可观察对象链接到单组件变量时遇到问题。这是代码:
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 没有得到值。
非常感谢你的帮助。
提前致谢。
根据您获得的信息,您可能遇到了异步问题。需要注意两件事:
像这样保存 Observable 值的快照是可以的,但如果你关心在值之后立即访问,它可能不起作用,因为一旦你
subscribe
你正在等待让 Observable 发出,这可能在您尝试使用快照后发生(在您的示例中,this.datos 变量)如果你想访问 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$();
}