我在这个组件中有一个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();
}
如果你只对实现setter的逻辑感兴趣:
import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';
// [...]
export class MyClass implements OnChanges {
@Input() allowDay: boolean;
ngOnChanges(changes: SimpleChanges): void {
if(changes['allowDay']) {
this.updatePeriodTypes();
}
}
}
如果更改了哪个输入属性并不重要,或者您只有一个输入属性,则不需要导入SimpleChanges。
Angular Doc: OnChanges
否则:
private _allowDay: boolean;
@Input() set allowDay(value: boolean) {
this._allowDay = value;
this.updatePeriodTypes();
}
get allowDay(): boolean {
// other logic
return this._allowDay;
}
如果你只对实现setter的逻辑感兴趣:
import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';
// [...]
export class MyClass implements OnChanges {
@Input() allowDay: boolean;
ngOnChanges(changes: SimpleChanges): void {
if(changes['allowDay']) {
this.updatePeriodTypes();
}
}
}
如果更改了哪个输入属性并不重要,或者您只有一个输入属性,则不需要导入SimpleChanges。
Angular Doc: OnChanges
否则:
private _allowDay: boolean;
@Input() set allowDay(value: boolean) {
this._allowDay = value;
this.updatePeriodTypes();
}
get allowDay(): boolean {
// other logic
return this._allowDay;
}