2017-12-01 11 views
0

がここにサンプル https://stackblitz.com/edit/angular-dybb4vが送信される値に私が欲しい、

sendValueToParentForModification(e) { 
//Send the value to parent 
this.sendValue.emit({ childComponent: this, e: e, myValue: this.myValue }); 
/* 
The parent modifies the value and that modified value should be used here.. 
Right now, I'm having the parent component call the function in this child "useModifiedValue". 
Instead, I want the flow to somehow come over here.. so that I can call the 
"useModifiedValue" function right here, with the modified value. How to do this? 
*/ 

}基本的に

を参照してください親が変更させ、バック子供にそれを渡し、親に子コンポーネントから値を送ります親コンポーネントに、必要に応じて親を修正してから、子コンポーネントに変更させます - 変更した値を使用します。

親コンポーネントに別の「emit」を追加したくありません。値のフローをチェーン化する方法はありますか?

ありがとうございました。

+0

シナリオを試して理解するための簡単な質問:子に値を欲しいのであれば、なぜそれが親に戻って戻ってくるのですか?それは両方とも価値を変える良い習慣ではないようです。親だけが変更された場合は、親から値を送信し、子に対して@Input()を作成します。 –

+0

親コンポーネントには、必要に応じて変更するオプションがあります。だからこそ、親に行ってから、子供に戻らなければなりません。 基本的には - 子---->データを持つ親にイベントを送信します 親 - >必要に応じて変更 - >>子は変更されたデータを使用します。 私の問題は、子で親によって変更されたデータをキャプチャしていることです。 何かこのようなもの childComponent.emit({data})done {/ *変更された値を使用* /} – Ganesh

答えて

0

サービスを実装して、これらの間の「中間者」として機能させることができます。両方のコンポーネントでサービスをインポートし、サービス内の変数を変更すると、サービス内の変数が他のコンポーネントに反映されます。一度だけ何も出さず、OnInit()で親と子の両方に登録する必要はありません。

+0

Brandon - ありがとう...このアプローチをデモするためのサンプルがありますか? – Ganesh

0

は、以下のことを試してみてください。

// Parent component 
@Component({ 
    selector: 'parent-component', 
    template: '<child-component (valueChanged)="changeValue($event)" [childValue]="childValue"></childComponent>' 
}) 
export class ParentComponent { 
    childValue: 'hello world'; 

    changeChildValue(newValue){ 
    this.childValue = newValue; 
    }; 
} 

// Child component 

@Component({ 
    selector: 'child-component', 
    template: '<div>{{childValue}}</div>' 
}) 
export class ChildComponent { 
    @Input() childValue; 
    @Output() valueChanged = new EventEmmiter<any>(); 

    changeValue(newValue) { 
    valueChanged.emit(newValue); 
    } 
} 

は、入力として親コンポーネントからchildValueを渡します。

ロジックに応じて、子の内部のchildValueを変更し、新しい値でchangeValueメソッドを呼び出します。親コンポーネントはそのイベントを受け取り、子に自動的に更新される値を更新します

関連する問題