Angular 2

时间:2016-06-03 13:37:40

标签: angular

我对Angular2中的双向绑定有疑问

我已经查看了很多例子,如何将它与输入字段一起使用等等。 但我想在我的情况下尝试它:我有两个组件,其中一个是共享(可重用)组件。另一个拥有它自己的模型。

我可以将主要组件的模型传递给可重用的组件并使用双向绑定吗?

<day [(currentDay)]="model.currentDay"></day>

我的问题:

1)我可以这样做吗?它是以正确的方式使用还是使用eventEmitter更好?

2)这就是我在主要组件中存储模型的方式:

model: DayModel = new DayModel(null, null);

以下是该可重用组件中的模型:

@Input() currentDay: DayModel;

当我尝试在可重用组件中使用它并访问currentDay时,我遇到了这样的问题: &#34;无法设置属性&#39;#someProperty&#39;未定义&#34; (currentDay未定义) 这就是我需要这个的原因:

@Input() currentDay: DayOfWeekModel = new DayOfWeekModel(... properties ...);

如何避免它?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

事实上,只使用@Input,你可以完成一半的工作;-)只有一种方式绑定。

在您的情况下,您还需要具有标准化名称的@Output:

@Output() currentDayChange: EventEmitter<DayModel> = new EventEmitter();

要触发有更新的父组件,请使用:

this.currentDayChange.emit(newValue);

[(...])表达式是[...]加上(...)的快捷方式:

<day [currentDay]="model.currentDay"
     (currentDayChange)="model.currentDay = $event"></day>

所以你需要实现两个......