Я хочу знать, как вызвать метод child (A) из родителя (B). Использование Output испускает родительский элемент (B) из дочернего элемента (A). и очень хорошо работает. Но я не хочу использовать этот способ. Я хочу знать, как я могу найти child (A) от родителя (B).Как найти дочерние компоненты по типу
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
Я думаю, что у них есть CompA1, CompA2. B может вызвать someMethod() CompA1. и CompA2. Я хочу так развиваться. Но я не знаю, как назвать CompA1, CompA2. Мое Подумайте неправильно? Если я ошибаюсь. Что я могу сделать?? только путем использования выходов?
помогите стартер !!!
Вау !!!!! ! Большое спасибо!!! @ViewChild действительно работает! Спасибо большое!!! Кстати! ваш другой способ не работает .... это выглядит просто, чем с помощью ViewChild .. – mago
Какой способ не работает? Последний? Вы получили ошибку? –
callSomeMethod (comA1: ComAClass) { this.comA1.someMethod(); } Я угадаю, что this.comA1 не найден. мой webstorm показывал красный текст и печатал неразрешенную переменную во всплывающей подсказке. и ошибка не может найти someMethod() на веб-консоли. но без этого. это работает! большое спасибо !!!! Я не забываю ваш ответ! – mago