javascript - Angular 2,带 setter 的 @Input 的行为是否与不带 setter 的 @Input 不同?

标签 javascript angular angular2-changedetection

我想知道是否有人可以详细说明这一点。带 setter 的 @Input() 与不带 setter 的 @Input() 在变化检测方面的行为是否不同?

例如:

@Input() something: SomeType; 

-对比-

private _something;

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

get something(): SomeType {
  return this._something;
}

明显的区别是 setter/getter 允许 @Input() 有一些额外的逻辑。但这是否会以不同于我在没有 setter 的情况下使用 @Input() 的方式影响变化检测?

最佳答案

对于 Angular 没有太多变化。不会设置输入或不会更频繁地调用 setter 。然而,有一个警告, setter 内部有更多逻辑可以触发另一个变化检测。如果有,angular 将抛出已知错误(仅在开发模式下)

Expression has changed after it was checked.

因此,变化检测器的行为并没有不同,但可能会出现问题,具体取决于您在 setter 中放置的额外逻辑

关于javascript - Angular 2,带 setter 的 @Input 的行为是否与不带 setter 的 @Input 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41963427/

相关文章:

javascript - jquery 结构 - 每个文件一个函数

Angular 14 + Jest - typescript_1.default.canHaveDecorators 不是函数

angular - 即使没有做任何更改,Angular 也会无限重新渲染是否正常?

javascript - 禁止用户刷新页面

javascript - 在元素上启动动画的捕获函数

Javascript Promise 过早解析

angular - Ionic - 滚动到页面的元素

typescript 中的 Angular : how to pass generic Type to function

javascript - Angular2 - 检测属性@Input 的变化

angular - 虚拟组件上的 ngrx 更改检测策略