一开始我有一个简单的问题:"何时以及为什么Angular2中的绑定被评估/更新?"
我希望实现绑定属性将在设置源代码时立即更新。
这个非常简单的plunker演示演示了这种行为:
代码中最有趣的部分:
setValue() {
console.log(this.childComponent.prop);
this.propValue = "button clicked";
//NOW I WANT TO GET THE NEW VALUE
console.log(this.childComponent.prop);
}
模板中更新的插值表示正确评估了绑定并更新了目标属性,但有时稍后会超出setValue
方法范围。
为什么我要这种行为?
我知道组件交互的这种工作方式不是必需的,但是......我有一个更复杂的自定义表单控件(实现ControlValueAccessor)。现在我正在研究一些"业务流程":这个复杂组件的ngModel是更复杂对象的一部分,可以被更多组件访问,这些组件通常可以相互影响对象的一部分
简化示例:
模型
{
public modelA: SomeClasss; <-- this is ngModel of comp. A
public modelB: SomeClasss; {...} <-- this is ngModel of comp. B
}
同时代码中的其他地方:
update(X: SomeClass) {
this.modelA = X;
this.componentA.updateMagicUI();
}
updateMagicUI
方法带有一些复杂的逻辑,使用ComponentA的内部结构基于它的新设置值。请注意,当且仅当显式调用它时,我才想执行此逻辑,而不是每次更改值时都执行此逻辑。
答案 0 :(得分:0)