2016-07-13 3 views
1

注:これはこれは私のコード(廃止予定のフォームで角度2 RC2アプリ)であるhttps://stackoverflow.com/questions/38356330/how-to-use-pattern-validation-in-angular-2-based-on-ngmodel-template-model-drivAngular 2で単一フォームフィールドの有効性を取得するにはどうすればよいですか?

で私の他の質問としてない同じ質問です:

<form #myForm="ngForm"> 
    <input id="inputControlX" ngControl="inputControlX" pattern="abcd"> 
    {{inputControlX.valid}} 
</form> 

inputControlX は(正しく検証されます無効なクラスが入力に追加されます)。私は

{{inputControlX.valid}} 

または

{{myForm.inputControlX.valid}} 

または

{{ngForm.inputControlX.valid}} 

を追加するとき は、しかし、私はエラーを取得しておいてください。は未定義の有効なプロパティを読み取ることができません。 一方(this answered questionのように)追加#inputControlX = "ngForm"、(でもngControlなし)、それは動作します

これはなぜ必要なのか?

答えて

1

あなたはmyFormオブジェクトがまだ初期化されていない、角度の試みは、ページの結合を評価するときなので、ここではElvisオペレータ/ ngIfディレクティブを使用する必要があります。だからmyForm.inputControlX.validの式を評価している間に、myFormオブジェクトはその時間が定義されていないので、エラーを投げます。

{{myForm?.inputControlX?.valid}} 
//OR  
<span *ngIf="myForm"> {{myForm.inputControlX.valid}}</span> 
+0

答えてくれてありがとう。 wirh #tempvarがなぜ機能するのかを明確にしてください。その後、私は答えを受け入れるよ – dragonmnl

+0

あなたは結びついた答えを言っているのですか? –

+0

'#tempvar =" ngForm "' angleを使用すると内部的にフォームオブジェクトを作成し、ngModelディレクティブを持つそのフォームオブジェクトの中にすべてのフィールドを配置し、すべてのバリデーションプロパティを各フォームレベルオブジェクトで利用できます。 Angular1の[この回答](http://stackoverflow.com/a/28569650/2435473)を参照することもできます。基本的な基本は同じです –

関連する問題