我对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 ...);
如何避免它?
提前谢谢!
答案 0 :(得分:1)
事实上,只使用@Input,你可以完成一半的工作;-)只有一种方式绑定。
在您的情况下,您还需要具有标准化名称的@Output:
@Output() currentDayChange: EventEmitter<DayModel> = new EventEmitter();
要触发有更新的父组件,请使用:
this.currentDayChange.emit(newValue);
[(...])
表达式是[...]
加上(...)
的快捷方式:
<day [currentDay]="model.currentDay"
(currentDayChange)="model.currentDay = $event"></day>
所以你需要实现两个......