假设我有可观察的
public myObservable$: Observable<SomeModel> | undefined;
和不可观察
public myNonObservable: SomeModel | undefined;
我就是这样填的
ngOnInit() {
this.myObservable$ = ....
}
如何从 myObservable$
获取数据并将其复制到 myNonObservable
?因为像映射和对象分配之类的东西在这里似乎不起作用。
答案 0 :(得分:1)
您需要订阅可观察对象:
ngOnInit() {
this.myObservable$ = ....
this.myObservable$.subscribe(data => {
this.myNonObservable = data;
});
}
答案 1 :(得分:1)
this.myObservable$.subscribe(data=> {
this.myNonObservable = data;
});
答案 2 :(得分:1)
你需要 subscribe
到一个 observable。 observable 是一个流,这意味着 SomeModel | undefined
可以随时间改变其值。当您订阅 observable 时,您会通过提供一个回调函数来读取该流,该回调函数会在每次新值到达该流时执行。
this.myObservable$.subscribe((model: SomeModel | undefined) => ...)
如果你订阅了一个 observable,你也需要取消订阅,当你不再需要监听这个 observable 的时候,例如当组件被销毁时。您可以将订阅存储在另一个成员变量中,或者使用更好的方式订阅 observable。 Angular 提供了一个 async
管道。该管道为您处理整个订阅/取消订阅过程。在您的模板中,您可以执行以下操作
<my-other-component [model]="myObservable$ | async">
</my-other-component>
在 OtherComponent
中,您可以定义一个直接作为模型的 @Input
。
@Component(...)
export class OtherComponent {
@Input() model: SomeModel|undefined;
}