我有一个名为ItemsSelector
的组件,其中包含ListView
:
<ListView class="list-group" [items]="[1,22,34,6]" style="height:1250px">
<ng-content></ng-content>
</ListView>
这就是我使用ItemsSelector
组件的方式:
<StackLayout class="home-panel">
<ItemsSelector>
<ng-template let-item="$implicit" let-i="index">
<Label [text]="'111'" color="black"></Label>
<Label [text]="'222'" color="black"></Label>
</ng-template>
</ItemsSelector>
<StackLayout>
但似乎ng-content
没有注入内容,它显示的项目与我想要的不一样
BTW - 根据docs,这是使用Listview
的方式:
所以我所做的就是从外面发送视图,但没有成功......
问题:
为什么没有ng-content
注入我提供的内容?
答案 0 :(得分:0)
问题在于,当您使用ng-template
时,实际上是在传递模板,而不是直接传递内容。
因此,您需要使用<ng-content>
和<ng-container>
而不是ngTemplateOutlet
。
在您的ItemSelector.component.ts中,从TemplateRef, ContentChild
@angular/core
现在在类中声明一个模板:@ContentChild(TemplateRef) template;
现在在ItemSelector.component.ts中,您可以像这样调用模板:
<ListView class="list-group" [items]="[1,22,34,6]" style="height:1250px">
<ng-container [ngTemplateOutlet]="template"></ng-container>
</ListView>
完成上述步骤后,如果您看到,您现在也将一些内容传递给ListView
组件。
因此,在ListView.component.html
中,您现在必须实施<ng-content>
让我知道这是否有效。