Угловой родитель к ребенку - PullRequest
0 голосов
/ 13 марта 2019

Изначально мой родительский компонент не имеет никакого отношения к дочернему.Просто список элементов.но когда пользователь нажимает на список дочерний компонент загружается.Затем я могу вызвать метод дочернего компонента из родительского с помощью @ViewChild.Но изначально это не работает, потому что изначально нет отношения родитель-потомок.как я могу решить это.

Ответы [ 3 ]

0 голосов
/ 13 марта 2019

Я думаю, что вы можете использовать EventEmitter 1 .В компоненте вы можете генерировать любое сообщение при его загрузке.А в другом компоненте вы можете подписаться на Eventemitter.

0 голосов
/ 14 марта 2019

Я использовал @input () для передачи значения из родительского в дочерний и использовал

ngOnChanges (changes: SimpleChanges) {
 for (let propName in changes) {
     let change = changes[propName];
     console.log(change);
 }

}

, где ngOnChanges подписывается на изменение и сохраняет текущее значение и предыдущее значение

0 голосов
/ 13 марта 2019

Вы можете использовать @ViewChildren, который очень похож, но также работает с элементами, которые еще не присутствовали до хука жизненного цикла AfterViewInit.Кроме того, он упаковывает ваши элементы в QueryList .

QueryList имеет свойство changes, которое можно наблюдать, на которое можно подписаться.Реализация может выглядеть примерно так:

export class SomeComponent implements AfterViewInit {

  @ViewChildren(ChildComponent) children: QueryList<ChildComponent>;

  ngAfterViewInit(): void {
    this.children.changes.subscribe(children => {
      children.forEach( (child: ChildComponent) => {
        child.somePublicMethod();
      });
    });
  }
}
...