У меня есть следующая HTML-структура, где foo
и bar
- две директивы, а baz
- пользовательский компонент.
<div foo>
<div bar></div>
<baz><baz>
<baz><baz>
</div>
HTML-код baz
-компонента выглядит примерно так ...
<div bar>Yada Yada Yada</div>
... и директива foo
выглядит примерно так:
// ...
@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>;
вообще не имеет никакого эффекта.