我在该组件中有一个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上设置@Input,如下所述:

_allowDay: boolean;
get allowDay(): boolean {
    return this._allowDay;
}
@Input() set allowDay(value: boolean) {
    this._allowDay = value;
    this.updatePeriodTypes();
}

看这个Plunkr:https://plnkr.co/edit/6miSutgTe9sfEMCb8N4p?p=preview.

Angular相关问答推荐

在Angular 应用中混合使用较少和较粗俗的文件

Angular 16+使用ngTemplateOutlet有条件地呈现几个模板中的一个

出错后可观察到的重用

使用 Angular 类构造函数来获取依赖项

无法绑定到formControl,因为它不是input的已知属性

PrimeNG:如何以编程方式更改分页器中的选定页面?

如何在Angular中自动路由到子路由

将 html ngModel 值传递给服务Angular

为什么 Redux 中的对象应该是不可变的?

怎样在 Angular 2 或 4 中将输入字段设为只读?

使用directive指令将类添加到host元素中

如何在 Angular Cli 中生成 .angular-cli.json 文件?

Angular2 + Jspm.io:使用类decorator 时需要反射元数据垫片

Angularmaterial步进器:禁用标题导航

在 Angular 4 中播放声音

*ngIf 带有多个异步管道变量

Lint 错误:实现生命周期挂钩接口

Angular2 - 从外部验证和提交表单

Angular 5 和material - 如何从 SnackBar 组件更改背景 colored颜色

如何在 Angular 4 中翻译 mat-paginator?