Angular组件输入属性设置和ngModel绑定的顺序是什么?

时间:2019-07-04 14:55:59

标签: angular angular2-ngmodel angular-input

我正在开发一个组件,并且在父组件内部使用它(因此在这种情况下,我们可以将我的组件称为子组件)。

我的组件具有一个名为selectedValue的@Input属性。

它也使用ngModel绑定(因为用法上下文是一种形式)。 ngModel绑定到父组件模型的属性。

我希望ngModel的值更改将更新组件的selectedValue属性(这是通过实现ControlValueAccessor和writeValue函数来完成的。)

在组件视图上,它将显示selectedValue的值。

代码摘要:

<parent-component ...>
   <my-child-component
      [(ngModel)]="parentModel.propertyMyComponentNeedToBind"
      [selectedValue]="defaultValue">
   </my-child-component>
</parent-component>

实现ControlValueAccessor

writeValue(value) {
   this.selectedValue = value:
}

我当前的问题是关于编辑(加载现有数据)的情况:

  • 如果未在视图模板中为组件设置[selectedValue],则ngModel的期望值将不会加载到视图中,而是空/空
<parent-component ...>
   <my-child-component
      [(ngModel)]="parentModel.propertyMyComponentNeedToBind"
      **does not have [selectedValue] here**>
   </my-child-component>
</parent-component>
  • 但是,如果我为视图模板中的组件设置了[selectedValue](如上面的代码摘要中所示),它可以将ngModel数据加载到视图中

因此,我猜想在从模板中设置@Input propertyngModel时,是否有一个特定的顺序Angular进程一个接一个?并且尤其是像我这样,当ngModel更改也将更新@Input属性时,这里是否存在任何特定的顺序或冲突?

当然,如果有人可以帮助指出我的问题背后的原因,我们将不胜感激?

0 个答案:

没有答案