多くの標準コントロール(<input>, <select>
など)を含むAngular 2.1のテンプレート駆動型と、複数の入力要素を含むカスタムコントロールがあります。Angular2カスタムコンポーネント - 元のままとしてマーク
カスタムコントロールでControlValueAccessorを実装しましたが、親フォームに変更/タッチ/有効な値を正しく伝播しています。
save(myForm: NgForm) {
myForm.form.markAsPristine();
myForm.form.markAsUntouched();
}
これは次のとおりです。ただし
...親フォームに私は、どの保存した後、私はこのような(これは適用されたCSSに影響を与える)汚れ/触れた状態をクリアするには、[保存]ボタンを持っていますトップレベルの親フォームとカスタムコントロール内のすべての要素に対して正常に動作していますでも<input>
のカスタムコントロール内のフィールドは、まだ触れられていない/汚れているとマークされています。
ダーティー/タッチ状態が変更されたときにカスタムコントロールに通知することができるので、一致する子の<input>
要素をクリアできるようになりますか? <input>
要素がカスタムコントロール内にある場合、親フォームのmarkAsPristine/Untouchedの呼び出しによって更新されないようです。
ありがとうございます!
感謝が、それは動作しません...それだけで'nameOfContrlol'という名前のカスタムコンポーネントをpristineとしてマークします。そのコントロール内の入力要素ではありません –
私は以前のバージョンのdoco(およびSO)のフォームの値をリセットするための回避策を見ていましたが、ダーティ/タッチのプロパティにフックするのを避けることを望んでいました。しかし、それはショットを与えるかもしれない –
FormBuilders、FormControls、FormGroupsは、あなたがハッキリしてしまうと、すぐにその機能を提供します。 – bendyourtaxes