正如您在此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的方法。
答案 0 :(得分:1)
这是一个奇怪的情况做这样的事情,但我相信要让它工作,他们需要实现另一个生命周期钩子。 AfterModelSet之类的东西:)
无论如何,您可以使用简单的setTimeout
和setValue
解决此问题:
ngAfterViewInit() {
this.ngModel.valueAccessor = this.innerNgModel.valueAccessor;
this.innerNgModel = this.ngModel;
setTimeout(() => {
this.innerNgModel.control.setValue(this.ngModel.model);
})
}