我想设置参数的默认值并在 2 秒后对其进行更改,这就是我所拥有的:
@Input() num: number;
ngOnInit() {
this.num = 1;
setTimeout(() => ++this.num, 2000);
}
在观点中:
{{ num }}
它与默认检测策略完美配合,但当我向组件装饰器添加changeDetection: ChangeDetectionStrategy.OnPush
时停止工作(该值始终1
且永远不会更改)。
为什么会这样?我认为onPush
策略只比较引用,而分配一个新整数总是会更改引用?
OnPush
策略在@Input
属性从父组件更改时检测更改。您可以将ChangeDetectorRef
注入到组件中。您可能会发现本文很有帮助。
@Input() num: number;
constructor(private cdr: ChangeDetectorRef){}
ngOnInit() {
this.num = 1;
setTimeout(() => {
++this.num, 2000;
this.cdr.detectChanges();
});
}