2016-06-01 6 views
0

私はモデル駆動型アプローチに変換するテンプレート駆動アプローチを使用するAngular 2フォームを持っています。Angular 2モデル駆動型の検証情報にアクセスしますか?

.ng-valid[required] { 
    border-left: 5px solid #42A948; /* green */ 
} 

これは緑色のバーで、必要な属性を持つすべてのフィールドをマーク:現在、フォームは、このようなスタイルを使用しています。

これをモデル駆動型に移行したので、コントロールには「必須」属性がなくなりました。フォームにバインドされたコントロール(以下を参照)に関連付けられたバリデーションルールにアクセスする方法はありますか?

buildForm() { 
    this.heroForm = this.fb.group({ 
     'name': [this.model.name, 
       Validators.compose([Validators.required, 
          Validators.minLength(4), 
          Validators.maxLength(24)])], 
     'alterEgo': [this.model.alterEgo], 
     'power': [this.model.power, Validators.required] 
    }); 
+0

現在のリリース候補には方法がないと思います。私はコントロールのバリデータのフォームコントロールに属性を適用したいので、これについては未解決の問題があります:https://github.com/angular/angular/issues/8175。その間、ng-validクラスと他の検証クラスがコントロールの検証状態に基づいて適用され、それらをCSS選択のために使用することができます。 – awiseman

+0

はい、検証状態を使用して、エラーメッセージ/有効性のカラーコードを表示できます。しかし、当初の要件は、必須フィールドをマークすることでした。 – DeborahK

答えて

1

私は内部データ構造の私のセットを使用して、このような方法を構築することにより、このロジックを提供することができました:

isRequired(controlName: string): boolean { 
     if (Object.keys(this._validationMessages).includes(controlName)) { 
     return Object.keys(this._validationMessages[controlName]).includes('required');} 
     return false; 
    } 

テンプレート、その後の名前を渡し、このメソッドにバインドコントロール。

関連する問題