Angular 5: получение списка запросов для всех ContentChildren (даже те из них, которые находятся в подкомпонентах)

Karl Dall спросил: 11 июня 2018 в 10:54 в: javascript

У меня есть следующая структура html, где foo и bar - две директивы, а baz - это настраиваемый компонент.

<div foo>
  <div bar></div>
  <baz><baz>
  <baz><baz>
</div>

html компонента baz выглядит примерно так:

<div bar>Yada Yada Yada</div>

... и foo -directive выглядит примерно так:

// ...
@Directive({
  selector: '[foo]'
})
export class FooDirective implements AfterContentInit {  @ContentChildren(BarDirective)
  m_bars: QueryList<BarDirective>;  public ngAfterContentInit(): void {    console.log('barCount:', this.m_bars.length);
  }
}

Проблема, которую я испытываю, заключается в том, что длина m_bars внутри FooDirective равна 1. Это содержит только div, который является прямым потомком <div foo>. Однако я ожидал, что это число будет 3 (один прямой дочерний элемент <div foo> и другой div) внутри двух baz -компонентов).

Почему так и как эта проблема может быть решена - если ее можно решить вообще?

Изменить 1: Изменить декоратор ContentChildren на

@ContentChildren(BarDirective, { descendants: true })
m_bars: QueryList<BarDirective>;

не имеет никакого эффекта.


0 ответов