[英]ngOnChanges not triggered though I called ChangeDetectorRef.detectChanges
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
。
我知道只有input
更改來自模板綁定時才會觸發ngOnChanges
。
所以我在console.log(1)
之后調用this.cdr.detectChanges()
) 但它沒有用。
這里有什么問題?
我在這里制作了stackblitz示例 - https://stackblitz.com/edit/angular-ivy-ugdba1
額外問題
如果無法觸發組件內部的ngOnChanges
,那么this.cdr.detectChanges()
會觸發哪些生命周期鈎子?
當從父組件更改輸入參數時調用ngOnChanges
。
如果您想在任何檢測后做某事,您應該使用ngAfterViewChecked()
this.cdr.detectChages()
調用當前組件模板上的更改檢測。 這意味着如果當前組件包含<child [data]="someData"></child>
那么它的[data]
輸入將被檢查更改。 child.ngDoCheck()
將被調用,如果someData
是新值child.ngOnChanges(...)
將被調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.