親(B)から子(A)メソッドを呼び出すことを知りたい。 出力を使用すると、子(A)から親(B)に放出されます。非常にうまく働いています。 しかし、私はこの方法を使いたくありません。私は親(B)から子供(A)を見つける方法を知りたい。タイプ別に子コンポーネントを見つけるには
A.component.ts
@Import {Component, EventEmitter} from '@angular/core';
@Component({
selector: 'com-a',
template: '<button (click)="sendDatas()">comA btn</button>',
outputs: ['getItems']
})
export class ComAClass{
public getItem = new EventEmitter<any>();
datas: any[] = ['abc', 'def'];
constructor(){
console.log('Hello, I'm Component A');
}
sendDatas(){
this.getItem.emit(this.datas);
}
someMethod(){
console.log('call method of component A');
}
}
とB.component.ts
@Import {Component, ...} from '...';
@Import {ComAClass} from '~~/A.component.ts';
@Component({
selector: 'com=b'
template: '<com-a name="comA1" (getItem)="getComAItem1($event)"></com-a>
<com-a name="comA2" (getItem)="getComAItem2($event)"></com-a>
<button (click)="callSomeMethod()">comB btn</button>'
})
export class ComBClass{
constructor(){
console.log('Hello, I'm Component B');
}
private getComAItem1(event){
console.log('comA1 output event');
}
private getComAItem2(event){
console.log('comA2 output event');
}
callSomeMethod(){
// how call the comA1.someMethod()?
}
}
私のソースは、コンソール上で次のように実行して印刷されます。
Hello, I'm Component B
Hello, I'm Component A
Hello, I'm Component A
私はBがCompA1、CompA2があると思います。 BはCompA1のsomeMethod()を呼び出すことができます。 CompA2もあります。私はそのように発展したい。しかし、私はどのようにCompA1、CompA2を呼び出すのか分かりません。私の考えは間違っていますか?もし私の考えが間違っているなら。私に何ができる??出力を使用する唯一の方法は?
スタート助けてください!
うわー変数のテンプレートを使用して参照を渡すことです!!!!! !本当にありがとう!!! @ViewChildは本当に働いています!どうもありがとうございます!!!ところで!あなたの別の方法は動作していません....それはViewChildを使用するよりも簡単です。 – mago
どちらの方法で動作していませんか?最後のもの?何かエラーがありましたか? –
callSomeMethod(comA1:ComAClass){ this.comA1.someMethod(); } this.comA1は見つかりませんでした。私のウェブストームは、赤いテキストを表示し、ツールチップに未解決の変数を表示していました。エラーがWebコンソール上でsomeMethod()を見つけることができません。これを使わずに使う。それは働いている!本当にありがとう !!!!私はあなたの答えを忘れない! – mago