哪种方法可以处理OnPush上的更改?

时间:2018-06-26 07:51:16

标签: angular

我要使用changeDetection: ChangeDetectionStrategy.OnPush。 我的问题是为Input更改选择哪种方法?

设置者和获取者

private _someVariable: number;

@Input() set someVariable(i) {
    this._someVariable = i;
    // something to do
}

get someVariable() {
    return this._someVariable;
}

有很多样板,可能在其他变量之前设置了一些变量,这可能会导致问题。 我认为Angular Material团队经常使用这种方法。

OnChanges

ngOnChanges(e) {
    if (e.someVariable && !e.someVariable.firstChange) {
      this.someVariable = e.someVariable.currentValue;
      // something to do
    }
}

我认为这是为它设计的,但是firstChange存在问题,您必须检查一下,而且有时我会遇到ExpressionChangedAfterItHasBeenCheckedError难以调试的情况。

ngDoCheck

那个我不知道的循环钩。所以不能写任何东西。

哪种方法最适合处理输入更改?

0 个答案:

没有答案