2017-05-05 18 views
0

レンダリングされていない場合、私は三つの入力を持つフォームを有する:次いで3秒後に、三つの入力がレンダリングされていない開始時角度2 #ID及び要素は

<div> 
<input *ngIf = "showInputs" #input1 (change)="onTfChnage(input2)" type="text"/> 
<input *ngIf = "showInputs" #input2 (change)="onTfChnage(input3)" type="text"/> 
<input *ngIf = "showInputs" #input3 type="text"/> 
</div> 

*ngIf条件falseで使用)IレンダリングするにはshowInputsをtrueに変更してください。入力の変更イベントが発生した場合、私はundefinednextInputのパラメータ

showInputs = false; 
constructor(){ 
    setTimeout(()=>{ 
     this.showInputs = true; 
    },3000); 
} 
onTfChnage(nextInput){ 
    console.log(nextInput) // got undefined here 
} 
+0

プランカが役立つでしょう。 –

+0

達成しようとしていることは何ですか? – Aravind

+0

基本的には、編集可能な方法で表示したいデータがあります。ユーザーが編集をクリックすると、すべての入力を表示する必要があります。条件が真であれば、次の入力をフォーカスします。 – Coyote

答えて

0

あなたの問題は、* ngIf可能性があります:メソッドでevent.target.valueため

<div> 
<input *ngIf = "showInputs" #input1 (change)="onTfChnage($event)" type="text"/> 
<input *ngIf = "showInputs" #input2 (change)="onTfChnage($event)" type="text"/> 
<input *ngIf = "showInputs" #input3 type="text"/> 
</div> 

ルック:あなたは必要であれば、あなたのセレクタと、より正確な/手の込んだ得ることができる、とはいえ、これは最も単純な形式でありますもう一度参照したいかもしれないフォームに値を隠しているときは、* ngHideに変更する必要があります。 * ngIfを使用すると、DOMから何かが隠されることはありませんが、実際には削除されます。したがって、参照しようとすると未定義になります。

https://docs.angularjs.org/api/ng/directive/ngHide

+0

問題は、DOM内にあるとき(* ngIf条件が真)にそれらを参照していることです。これは何とか私にとって不思議です – Coyote

0

使用$イベント、

<input #input1 (change)="onTfChnage($event)" type="text"/> 

か、変数

input1 :ElementRef ; 
input2:ElementRef; 


    <input #input1 (change)="onTfChnage(input2)" type="text"/> 
<input #input2 (change)="onTfChnage(input1)" type="text"/> 

LIVE DEMO

を宣言する必要がありますを取得します
+0

私は現在の入力ではない次の入力をしたい – Coyote

+0

私のデモを見ましたか? – Aravind

+0

はい、それは私が欲しいものではありません、基本的に私は同じページに30の入力を持っているので、コンポーネントtsファイルでそれらを宣言すると痛いでしょう:)とにかく感謝 – Coyote

0

$ eventまたは$ event.targetを渡し、jsを使用して次の要素を取得します。

showInputs = false; 
constructor(){ 
    setTimeout(()=>{ 
     this.showInputs = true; 
    },3000); 
} 
onTfChnage(event){ 
    console.log(event.target.nextElementSibling.value) // next elements value 
} 
+0

私は次の入力は現在の入力ではありません – Coyote

+0

@Coyote - 説明のおかげで、次の要素の値を取得する答えを更新しました – Eeks33

+0

より一般的な解決策が必要です。 (divの例)どのように私は2番目のものを参照することができますか? – Coyote

関連する問題