Forms 设置初始值以在角度4中的自定义组件内选择
正如您在这个plunkr()中所看到的,我有两个选择:一个选择在主组件中正常运行,另一个选择在自定义组件中继承ngModel设置 以下代码将innerNgModel链接到组件ngModelForms 设置初始值以在角度4中的自定义组件内选择,forms,angular,angular-ngmodel,Forms,Angular,Angular Ngmodel,正如您在这个plunkr()中所看到的,我有两个选择:一个选择在主组件中正常运行,另一个选择在自定义组件中继承ngModel设置 以下代码将innerNgModel链接到组件ngModel ngAfterViewInit() { //First set the valueAccessor of the outerNgModel this.ngModel.valueAccessor = this.innerNgModel.valueAccessor; //Set the innerN
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;
}
它可以工作,因为名称属性由两个选项更新
但是,当第一次加载第二个选择时,没有选择
我想我遗漏了一些东西,一种用初始值初始化innerNgModel的方法。这样做是一种奇怪的情况,但我相信要让它工作起来,他们需要实现另一个生命周期挂钩。AfterModelSet或类似的东西:) 无论如何,您可以通过简单的
setTimeout
和setValue
来解决这个问题:
ngAfterViewInit() {
this.ngModel.valueAccessor = this.innerNgModel.valueAccessor;
this.innerNgModel = this.ngModel;
setTimeout(() => {
this.innerNgModel.control.setValue(this.ngModel.model);
})
}