我想知道是否有人可以详细说明这一点。带 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/