我有一个带有“填充表单”按钮的表单,用于设置其模型属性。 模型绑定似乎工作正常但是当我单击按钮时,实现ControlValueAccessor的控件在我聚焦并模糊它们之前不会得到它们的值。
如果控件是纯HTML输入,则可以立即看到模型更改。 如果我设置了一个自定义控件,那么在我点击它们之前它们不会反映出它们的变化......
任何线索?
我使用角度2决赛。
此代码显示值,即表单创建后的值 ngOnInit(){
super.ngOnInit();
this.form = this.formBuilder.group({
myfield: ['', ]
})
this.myfield= this.form.controls['myfield'];
...
this.obs.push(this.route.params.subscribe(params => {
if (params['myparam']) {
this.model.myfield= params['tper_Codigo'];
this.dataservice.get("miEntity", this.model).subscribe(somedata => {
this.model = somedata;
});
}
}));
此代码不
someClick() {
//trying all sort of methods
this.model = { myfield : 'aaaa'};
this.form.patchValue({ myfield : 'bbbbb' });
(<FormControl>this.form.controls['myfield']).updateValueAndValidity();
(<FormControl>this.form.controls['myfield']).patchValue('cccc');
}
正如我之前所说的......如果我点击并模糊元素,所有上述方法都会反映该值,因此设置的值,直到模糊才会显示
答案 0 :(得分:1)
我最终重写了我的控制值访问器,更像是角度团队中的angular2 / material中的那个。 https://github.com/angular/material2/blob/master/src/lib/input/input.ts
我强烈建议使用这些组件作为控制构建的最终参考(我说控制区分“组件”的gtom“视图”并参考单片ui基础控件)。任何其他例子都不足。我还建议看一些其他项目也将这些控件作为“灵感”,例如http://code.promactinfo.com/md2/
非常有帮助,有效的东西
感谢所有人!
答案 1 :(得分:0)
您可以使用setValue()函数来更新控件值。您可以查看api doc