export class AppComponent implements OnInit, OnChanges {
@Input()
value: number;
constructor(
private cdr: ChangeDetectorRef
) {}
ngOnInit() {
of(1).subscribe(v => {
this.value = v;
console.log(1);
this.cdr.detectChanges();
of(2).subscribe(() => {
console.log(2);
});
})
}
ngOnChanges(c: SimpleChanges) {
console.log(3);
}
}
我预计 console.log 的序列应该是1, 3, 2
,但它只打印1, 2
.
我知道只有当只有更改来自模板绑定ngOnChanges
时才会触发。input
所以我this.cdr.detectChanges()
马上打电话,console.log(1)
但它没有用。
这里有什么问题?
我在这里制作了 stackblitz 示例 - https://stackblitz.com/edit/angular-ivy-ugdba1
额外问题
如果无法触发ngOnChanges
组件内部,会触发哪些生命周期钩子this.cdr.detectChanges()
?