2017-10-11 16 views
1

私は親子関係を持つプログラミングアプリケーションです。データ/イベントフローを処理するためのベストプラクティスを探しています。 親には、子コンポーネントに送信される項目のリストがあります。角2/4親子通信

子コンポーネントには、現在の値を更新するためのデータエントリがあります。現在のところ、更新値は子供から処理されています。私は次のようにしました。サーバから成功を収めたとき、私はちょうど子の値が大丈夫であることを確認します。私はこのデータを親(eventEmitter)に伝播させることを可能にしましたが、この時点で私はこれで何もしていませんか? ここで双方向データバインディングを使用しているかどうかまたは、私はonActivityUpdatedを使用してそのアイテムを親に伝播する必要がありますか?子供がサービスコールとその値の更新を処理する必要がありますか?

子リストはリスト(同じページのすべてのデータ)として表示されるため、1つの子を編集してから別の子を編集することができます。親からすべてのオプションを保存する必要があります。これを処理する最適な方法は何ですか?親がサービスコールを開始し、すべての値を変更する必要がありますか?

TS:

export class ParentComponent implements OnInit { 
//Filtered items 
@Input() 
public items: Client[]; 
ここ

親がこのように子どもたちに送られるアイテムのリストを、持っている...これまでのところ、私は不必要なもののほとんどをommitedたコードです

HTML:

<case-activity-time-edit-item *ngFor="let item of items; let i = index" [(element)]="items[i]" (activityUpdated)="onActivityUpdated($event)"></case-activity-time-edit-item></div> 

ここに子供の:

export class ChildComponent implements OnInit { 
@Input() 
public element: Client; 

@Output() 
public activityUpdated: EventEmitter<Client> = new EventEmitter<Client>(); 
+0

私たちがここでオブジェクトを扱っている場合、オブジェクトはJSで可変であることを覚えておく必要があります。この場合、オブジェクトはパスされます。参考にして、あなたが子供のデータを使って何をしても、親はイベントエミッターがなくても知っています。ちょうど注意してください、これはいつもあなたが望むものではないかもしれませんが、あなたはそれがここで起こるように思えます。また、データの編集や保存について話しているので、ここで便利な形式のように思えます。私は多くの機能で本当に素晴らしいです反応性のフォームを使用するだろう! :) – Alex

答えて

0

あなたがしていることはすべてよく見えます。

_element: Client; 
@Input() set element(val) { 
    this._element = val; 
} 
get element() { 
    return this._element; 
} 
関連する問題