モデルプロパティを設定するボタン「fill form」を持つフォームがあります。 モデルバインディングは正常に動作しているようですが、ボタンをクリックすると、ControlValueAccessorを実装しているコントロールは、フォーカスを合わせてぼかすまで、その値を取得しません。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');
}
iは前記のように作成フォーム前後...もしIクリックして要素をぼかすと、上記のすべてのメソッドは値を反映するので、値が設定され、ぼかしまで表示されません。
共有できるコードがありますか? –
ok、やっと、私はgithubのangular2/materialにDEEPダイブを取ることにしました。私は、自分のコントロールと同じような方法で、非常に "ehem"でtmyカスタムコントロールの実装をリファクタリングしてしまいました...今は動作します。私は鉱山のどの部分が働いていなかったかわからないと思う。 – user5328504