角度2,带有设置器的@Input的行为与不带有设置器的@Input的行为不同吗?

Kri*_*eck 4 javascript angular2-changedetection angular

我想知道是否有人可以对此进行详细说明。是否@Input()与二传手VS使用@Input()不同的问候没有制定者的行为来改变检测?

例如:

@Input() something: SomeType; 
Run Code Online (Sandbox Code Playgroud)

-vs-

private _something;

@Input() set something(something: SomeType ) {
  this._something = something;
}

get something(): SomeType {
  return this._something;
}
Run Code Online (Sandbox Code Playgroud)

明显的区别是设置器/获取器允许@Input()使用一些额外的逻辑。但这是否会以与@Input()不使用setter的情况不同的方式影响变更检测?

Pie*_*Duc 5

对于角度变化不大。将不会设置输入或不会更频繁地调用设置器。但是,需要注意的是,设置器内部还有更多逻辑可以触发其他更改检测。如果有的话,angular会抛出已知错误(仅在开发模式下)

检查后表达式已更改。

因此,变化检测器的行为不会有所不同,但是可能会出现问题,具体取决于您在设置器中添加了哪些额外的逻辑