使用 onPush 检测策略在超时中改变数字



我想设置参数的默认值并在 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();
  });
}

相关内容

  • 没有找到相关文章

最新更新