我在该组件中有一个Angular2组件,它目前有一堆字段,在它们之前应用了@Input()以允许绑定到该属性,即
@Input() allowDay: boolean;
我想做的实际上是使用get / set绑定到属性,以便可以在setter中执行其他一些逻辑,如下所示
_allowDay: boolean;
get allowDay(): boolean {
return this._allowDay;
}
set allowDay(value: boolean) {
this._allowDay = value;
this.updatePeriodTypes();
}
我将如何在Angular2中做到这一点?
基于Thierry Templier的建议,我将其更改为,但这引发错误无法绑定到“ allowDay”,因为它不是已知的本机属性:
//@Input() allowDay: boolean;
_allowDay: boolean;
get allowDay(): boolean {
return this._allowDay;
}
@Input('allowDay') set allowDay(value: boolean) {
this._allowDay = value;
this.updatePeriodTypes();
}
我很想知道如果您按照接受的答案所示使用get set的方法,如何设置单元测试。
—
Winnemucca
无论您最终要做什么,请确保在设置器中放置一个断点,调试语句或计数器,以确保它仅按预期触发一次。我只是发现我的每次变更检测运行都在进行更新,这导致了糟糕的性能和古怪的行为。
—
Simon_Weaver
[allowDay]="....". If the field (setter) name and the property name you want to use for binding are the same, you can omit the parameter for
@Input(...)`。