これは、コンポーネント間の機能参照についての質問であるthisのフォローアップです。オブジェクトエフェクトをイベントエミッタにする方法は?
私が持っている場合はParentComponent
:
export class ParentComponent {
public myParentVariable = 'Hello world';
test() {
console.log(this.myParentVariable);
}
public options: any[] = [
{label: 'Item 1', onClick: this.test},
{label: 'Item 3', onClick: this.test},
{label: 'Item 6', onClick: this.test},
{label: 'Item 2', onClick: this.test}
];
}
あなたは私がonClick
財産でtest
への参照を渡す見ることができるように。
その後、私は私がParentComponent
からにoptions
を渡すChildComponent
を持っている:
<child [options]="options"></child>
そしてchild
に、私はリストがあります:あなたは、私はその後、呼び出しテンプレートに見ることができるように
<ul class="dropdown-list">
<li *ngFor="#option of options" (click)="option.onClick()"></li>
</ul>
を前もってonClick
を(click)="option.onClick()"
とする。
ここから問題は、test
への参照を渡すだけなので、それ以上のものが何であるか分かりません。this.myParentVariable
だから代わりにonClick
をと呼ぶことができるEventEmitter
にしたいので、test
を正しいデータバインディングで実行するようにします(hereのように)。
しかし、私は関数を参照するプロパティを含むオブジェクトを含む配列を渡すので、個々のオブジェクトの単一のonClick
プロパティをどのようにして作るのかはよく分かりません。EventEmitter
options
全体を出力したところ、EventEmitter
が悲惨に失敗しました。
これを達成するためのアイデアはありますか?
あなたは関数のbindメソッドを使うことができます:onClick:this.test.bind(this) – kemsky
@kemskyそれはうまくいきます。この角度は2かTypeScriptですか?それを答えとしても提供してください。 – Chrillewoodz