【发布时间】:2021-07-05 12:29:04
【问题描述】:
请参阅此 plunkr 以获取插图:https://plnkr.co/edit/Tm4AW0sU0pumBA8I?open=lib%2Fapp.ts&deferRun=1
我在类初始化器中声明所有内容的组件 1:
@Component({
template: '{{ data$ | async | json }}',
selector: 'app-data'
})
export class AppData {
readonly id$ = new Subject();
readonly data$ = this.id$.pipe(
switchMap(id => of(`id = ${id}`))
);
@Input()
set id(val: number) {
this.id$.next(val)
}
}
以及我创建 observable onInit 的组件 2:
@Component({
template: '{{ data$ | async | json }}',
selector: 'app-data-oninit'
})
export class AppDataOnInit implements OnInit {
@Input()
id: number;
data$: any;
ngOnInit(): void {
this.data$ = of(`id = ${this.id}`)
}
}
我试图在组件构造器或类初始化器中声明可观察对象,但异步管道没有在那里订阅它。但是,如果我在 ngOnInit 中实例化 observable,它会按预期工作。
我整天都在寻找对此的解释,但一无所获。这里缺少的拼图是什么?
我觉得在创建类时声明可观察对象更有意义。
【问题讨论】:
标签: angular rxjs reactive-programming