【发布时间】:2016-10-19 15:52:36
【问题描述】:
我有一个带有“填写表单”按钮的表单,用于设置其模型属性。 模型绑定似乎工作正常,但是当我单击按钮时,实现 ControlValueAccessor 的控件在我聚焦并模糊它们之前不会获得它们的值。
如果控件是纯 html 输入,则模型更改立即可见。 如果我设置了我的自定义控件之一,在我点击它们之前,它们不会反映它们的更改...
有什么线索吗?
我使用 angular 2 final。
此代码确实显示了值,即在创建表单之后 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');
}
正如我之前所说...如果我单击并模糊元素,上述所有方法都会反映该值,因此设置了该值,直到模糊才显示
【问题讨论】:
-
你有一些代码可以分享吗?
-
好的,最后我决定深入了解 github 上的 angular2/material。我最终以与他们非常“ehem”相似的方式重构了 tmy 自定义控件的实现......现在它可以工作了。我想我永远不会知道地雷的哪一部分坏了