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