2017-05-11 17 views
0

デコレータを使用して、親コンポーネントから子コンポーネントに文字列nameを送信しています。この文字列nameは、子コンポーネントの関数にパラメータとして渡されます。親コンポーネントの値を子コンポーネントのparamとして渡す

親コンポーネントのイベント(クリックなど)が発生するたびに、このnameの値が変更され、子コンポーネントの関数に影響します(nameがパラメータとして使用されるため)。これは私の子コンポーネントからの抜粋です:

@Input() name: string; 

ngOnChanges() { 
    this.childFunction(this.name); 
} 

私が今直面してる問題は、子ビューが、前回の関数呼び出しから値を保持していることです。後で親をクリックするたびに、古い出力を削除して新しい出力を置き換えるだけで、新しい出力が追加されます。

更新:解決策が見つかりましたが、正しいかどうかはわかりません。基本的には、子関数はオブジェクトの配列を返すので、すべての関数呼び出しの始めに配列を単に空にしています。これは問題を修正したようです。

答えて

3

ngOnInitはコンポーネントに対して1回だけ実行されます。代わりにngOnChangesを使用してください。ここでドキュメントを参照してください、それは成分(又は指令)の 入力プロパティの変更を検出するたびにhttps://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#onchanges

角度がngOnChanges()メソッドを呼び出します。この例では、 はOnChangesフックを監視します。

ngOnChanges(changes: SimpleChanges) { 
    for (let propName in changes) { 
    let chng = changes[propName]; 
    let cur = JSON.stringify(chng.currentValue); 
    let prev = JSON.stringify(chng.previousValue); 
    this.changeLog.push(`${propName}: currentValue = ${cur}, previousValue = ${prev}`); 
    } 
} 
+0

ああ私の神は本当にありがとう!これはうまくいった! – ZeroDarkThirty

+0

私はもう一つの問題を抱えているようです。それを説明するオリジナルの投稿を更新しました。できれば見てください。 – ZeroDarkThirty

+0

その後の問題は別の質問になるはずです – benPearce

関連する問題