は、私はこのようになりますキッチンのクラスがあるとしAngular2:双方向バインディングを行う場合、明示的にEventEmitterを使用する必要がありますか?</p> <pre><code>@Component({ template: ` <kitchen [(kitchenLunch)]=lunch></kitchen> ` }) export class House { private lunch: Lunch; } </code></pre> <p>ハウスコンポーネント:
- サブコンポーネントに含まれてい
Kitchen
- 家は、いくつかの状態を含むデータモデルを持っています。
- ハウスには、データモデルの台所との双方向バインディングが設定されています
- ハウスまたはキッチンでデータモデルが変更されると、両方の場所に変更が表示されます。
私の質問はキッチンの@Output
の構文です。これは現在私が使用しているものです:
@Component({
selector: 'kitchen',
template: '...'
})
export class Kitchen {
@Input
private kitchenLunch: Lunch;
@Output
private kitchenLunchChange: EventEmitter<any> = new EventEmitter();
}
これは私の予想通りです。私はKitchen
コンポーネントでkitchenLunchを更新するたびに、私は次の操作を行います。
this.kitchenLunch = **Something**
this.kitchenDataModelChange.next(this.kitchenDataModel);
しかし、これは少し冗長なようです。私が本当にやりたいことは、このような何かをするために台所クラスの短縮である:
this.kitchenLunch = **Something**
質問:
私はkitchenLunchを更新するとき@Component({
selector: 'kitchen',
template: '...'
})
export class Kitchen {
@Input
@Output
private kitchenLunch: Lunch;
}
その後、私はちょうどこれをやりたいです
- プライベートメンバーを入力にすることは可能ですか&出力?
- EventEmitterではない@Outputを使用できますか?
- 私はここで使用することができる/いくつかの短所はありますか?
@Output
の名前には、入力と同じ名前のChange
を指定する必要があります。この場合kitchenLunch + Change
。私はこれを試行錯誤で見つけました。これはどこに文書化されていますか?