为什么@ContentChildren在查询匹配的选择器时包含self(this)?

时间:2016-11-17 16:27:19

标签: angular

我有一个可以嵌套的组件,它会尝试查询其子组件。

@Component({
    selector: "container",
    template: `[{{this.children.length}}]<ng-content></ng-content>`
})
export class ContainerComponent {
    @ContentChildren(ContainerComponent) public children:QueryList<ContainerComponent>;
}

但是,QueryList不仅包括所有子组件,还包括查询组件本身(== this)。

<container>
    <container></container>
    <container></container>
</container>

输出为[3] [1] [1]而不是[2] [0] [0]。

https://plnkr.co/edit/mGuJEE60QUCXYb3jIYUx?p=preview

这可以预防吗?对于DI,有@SkipSelf,但它似乎不适用于@ContentChildren。

1 个答案:

答案 0 :(得分:6)

有一个公开的错误可以让这个改变并得到确认。 这将在未来发生变化。

https://github.com/angular/angular/issues/10098#issuecomment-235157642