誰かが次の行動の背後に何があるかを説明してもらえ:Angular2、* ngIfとローカルテンプレート変数
たちは_modelオブジェクトを持つAngular2コンポーネントを持っていると言います。その後、我々はこの
<form>
<input type="text" class="form-control" required [(ngModel)]="_model.firstName" ngControl="test2" #myInput >
<br>Class: {{myInput?.className}}
</form>
を持っているテンプレートに_modelはngOnInitでゼロから作成され、最初から使用可能です。入力フィールドが正しく正しくテンプレート
Class: form-control ng-untouched ng-pristine ng-invalid
に以下レンダリング_model.firstName変数とライン
<br>Class: {{myInput?.className}}
が移入されています。
これまでのところとても良いです。どのような私を混乱することは瞬間、私は* ngIf追加することであり、私は明らかにローカルmyInput
変数は、コード内で他の場合でも、何も初期化されていないされませんので、二重の中括弧の補間が動作しなく
<input *ngIf="_model" type="text" class="form-control" required [(ngModel)]="_model.firstName" ngControl="test2" #myInput >
に入力フィールドを変更します変更された場合、_modelオブジェクトはまだonNgInit()
に作成され、入力フィールドはまだ正常に動作しています。 {{myInput?.className}}
がレンダリングする唯一のものは
Class:
で誰かが何が起こっているかを説明し、および/またはそのための文書の正しい片に私を指すことができますか?
ありがとうございます!
編集:
はここで質問
http://plnkr.co/edit/itNRpy5lc9PB837C7HdP?p=preview
私たちは、同じ要素上のローカルテンプレート変数を参照することができhttps://github.com/angular/angular/issues/8087
あなたの_modelはブール値ですか? –
プランナーを作ることはできますか? –
私のアプリケーションでそれをテストしただけで、問題を再現できます。どうにかして '* ngIf'を追加した後に'#myInput'が 'undefined'になってしまいます。これはangular2のバグのように感じるか、誰かが良い説明を出す必要があります。 – PierreDuc