Angular2 @ContentChildren 未填充在父级内部 <ng-content>
Angular2 @ContentChildren not populated inside parent <ng-content>
问题:
@ContentChildren 似乎不适用于父 <ng-content>
容器。
即使内容是组件的子项。
笨蛋:https://plnkr.co/edit/J5itJmDfwKwtBsG6IveP?p=preview
注意:我正在使用{descendants: true}
示例代码:
主要HTML:
<div>
<child>
<test></test>
<test></test>
<test></test>
</child>
<br><br>
<parent>
<test></test>
<test></test>
<test></test>
</parent>
</div>
子组件:
<h2>Child</h2>
<parent>
<ng-content></ng-content>
</parent>
父组件:
<h3>Parent</h3>
<ng-content></ng-content>
<div class='length'>Line count : {{length}}</div>
问题
test
组件的长度,子组件为0,父组件为3。
详细代码:
import {
Component, ContentChildren, Directive
} from '@angular/core';
@Directive({selector: 'test'})
export class Test {}
@Component({
selector: 'parent',
template: `
<h3>Parent</h3>
<ng-content></ng-content>
<div class='length'>Line count : {{length}}</div>
`
})
export class ParentComponent {
@ContentChildren(Test, {descendants: true}) private tests : QueryList<Test>;
constructor() { }
get length () {
return this.tests.length;
}
}
import {
Component
} from '@angular/core';
@Component({
selector: 'child',
template: `
<h2>Child</h2>
<parent>
<ng-content></ng-content>
</parent>
`
})
export class ChildComponent {
constructor() { }
}
ContentChildren
将只计算分配给 current Component
的指令。对于您的情况,在将 test
指令分配给 ChildComponent
时,您应该计算 ChildComponent
本身的指令。
参考这个 plunker 我从你那里分叉出来的。
问题:
@ContentChildren 似乎不适用于父 <ng-content>
容器。
即使内容是组件的子项。
笨蛋:https://plnkr.co/edit/J5itJmDfwKwtBsG6IveP?p=preview
注意:我正在使用{descendants: true}
示例代码:
主要HTML:
<div>
<child>
<test></test>
<test></test>
<test></test>
</child>
<br><br>
<parent>
<test></test>
<test></test>
<test></test>
</parent>
</div>
子组件:
<h2>Child</h2>
<parent>
<ng-content></ng-content>
</parent>
父组件:
<h3>Parent</h3>
<ng-content></ng-content>
<div class='length'>Line count : {{length}}</div>
问题
test
组件的长度,子组件为0,父组件为3。
详细代码:
import {
Component, ContentChildren, Directive
} from '@angular/core';
@Directive({selector: 'test'})
export class Test {}
@Component({
selector: 'parent',
template: `
<h3>Parent</h3>
<ng-content></ng-content>
<div class='length'>Line count : {{length}}</div>
`
})
export class ParentComponent {
@ContentChildren(Test, {descendants: true}) private tests : QueryList<Test>;
constructor() { }
get length () {
return this.tests.length;
}
}
import {
Component
} from '@angular/core';
@Component({
selector: 'child',
template: `
<h2>Child</h2>
<parent>
<ng-content></ng-content>
</parent>
`
})
export class ChildComponent {
constructor() { }
}
ContentChildren
将只计算分配给 current Component
的指令。对于您的情况,在将 test
指令分配给 ChildComponent
时,您应该计算 ChildComponent
本身的指令。
参考这个 plunker 我从你那里分叉出来的。