2016-10-19 10 views
0

モデルプロパティを設定するボタン「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クリックして要素をぼかすと、上記のすべてのメソッドは値を反映するので、値が設定され、ぼかしまで表示されません。

+0

共有できるコードがありますか? –

+0

ok、やっと、私はgithubのangular2/materialにDEEPダイブを取ることにしました。私は、自分のコントロールと同じような方法で、非常に "ehem"でtmyカスタムコントロールの実装をリファクタリングしてしまいました...今は動作します。私は鉱山のどの部分が働いていなかったかわからないと思う。 – user5328504

答えて

0

setValue()関数を使用してcontロールの価値。あなたはチェックすることができますapi doc

+0

私はこのようにして、他の多くのものを試してみた。 intresting部分は、フォームの初期化の直後に機能することです。その後、モデルの変更やパッチ値の設定は効果がありません。私は手動でダイジェストサイクルをトリガーしたり、ゾーンをリフレッシュしようと試みたりしました。controlvalueaccessorを実装しているコントロールの変更を確認する唯一の方法は、手作業でフォーカスすることです。 – user5328504

+0

テンプレートでデータをどのようにバインドしますか? – Mavlarn

+0

こんにちはMavlam、私は以前コメントして悲しんでいましたが、私はangle2/materialソースからCVAの大半を取ってコンポーネントを書き直しました。私のコードは、最初はかなり類似していましたが、なんらかの理由で軽度の変更が起こり、想定通りに動作しました。私はこの問題に戻り、なぜそれが起こったのか把握したいと思いますが、私は厳しいスケジュールを守っています。 – user5328504

1

私は、角のチームからangle2/materialのものと同じように、私のコントロール値アクセサを書き直すことになりました。 https://github.com/angular/material2/blob/master/src/lib/input/input.ts

私は、これらのコンポーネントをコントロールビルディングの究極のリファレンスとして使用することを強く推奨します(「コンポーネント」のgtom "ビュー"を区別し、モノリシックUIコントロールを参照してください)。他の例は不足しています。私はまた、このようなhttp://code.promactinfo.com/md2/として、また、「インスピレーション」として、これらのコントロールを取ることでしたいくつかの他のプロジェクトを見てお勧めします

非常に役に立ったし、ちょうどすべてに

おかげで働くもの!

関連する問題