设置初始值以在Angular 4中的自定义组件中进行选择

时间:2017-05-10 11:58:22

标签: forms angular angular-ngmodel

正如您在此plunkr(https://plnkr.co/edit/3EDk5xxSLRolv2t9br84?p=preview)中所看到的,我有两个选择:一个在主要组件中表现正常,一个在自定义组件中,继承ngModel设置。

以下代码将innerNgModel链接到组件ngModel。

ngAfterViewInit() {
  //First set the valueAccessor of the outerNgModel
  this.ngModel.valueAccessor = this.innerNgModel.valueAccessor;

  //Set the innerNgModel to the outerNgModel
  //This will copy all properties like validators, change-events etc.
  this.innerNgModel = this.ngModel;
}

它有效,因为name属性由两个选择更新。

然而,当它第一次加载时,第二个选择没有选择。

我想我错过了一些东西,一种用初始值初始化innerNgModel的方法。

1 个答案:

答案 0 :(得分:1)

这是一个奇怪的情况做这样的事情,但我相信要让它工作,他们需要实现另一个生命周期钩子。 AfterModelSet之类的东西:)

无论如何,您可以使用简单的setTimeoutsetValue解决此问题:

ngAfterViewInit() {
   this.ngModel.valueAccessor = this.innerNgModel.valueAccessor;
   this.innerNgModel = this.ngModel;
   setTimeout(() => {
      this.innerNgModel.control.setValue(this.ngModel.model);
   })
}

plunkr