0
私は基本的に親コンポーネントのテンプレートで反復されるリストコンポーネントである子コンポーネントを持っています。親コンポーネントの子コンポーネントにメソッドがあるとします。私はこのメソッドを多くのコンポーネントの1つに属しています。Angular2の親コンポーネントのコンポーネントのリストから子コンポーネントのメソッドを呼び出す方法は?
たとえば、これは私の子コンポーネントである:
@Component({
selector: 'list-item',
template: '<li>{{value}}</li>',
})
export class ListItem implements OnInit {
@Input value: number;
changeValue(newValue) {
this.value = newValue;
}
}
そして、これが私の親コンポーネントがどのように見えるかである -
@Component({
selector: 'list',
template: '<div><list-item *ngFor="let item of items" [value]="item.value"></list-item></div>',
})
export class List implements OnInit {
// Some code to call **changeValue**
// method of the let's say the second
// list-item from the template
}
私は約@ViewChildデコレータを知っているが、それはのための仕事です最初のものだけ。
子コンポーネントを独立した再利用可能なコンポーネントと見なします。だからパブ/サブの使用は良い考えではありません。
「value」プロパティと「changeValue」メソッドをカプセル化するために、別の「モデル」クラスを作成する方がよいと思います。親コンポーネントはこれらのオブジェクトで 'changeValue'を呼び出し、子コンポーネントはAngular 2の変更検出メカニズムを介してこれらの変更に反応します。実行可能な選択肢のように聞こえるが、明確ではない場合、私はあなたの答えに詳細を追加することができます。 –
私が言ったように、子コンポーネントを独立したコンポーネントと見なします。私たちはそれを改変することはできません。 – user1532043