我们有一些数组,例如:
heroes:Hero[];
villains:Villain[];
- ...
puppies:Puppy[]
还有一个模板:
<p *ngFor="let individual of heroes">
{{ individual.name }} - {{ individual.mobileNumber }}
...
</p>
<p *ngFor="let individual of villains">
{{ individual.name }} - {{ individual.mobileNumber }}
...
</p>
...
<p *ngFor="let individual of puppies">
{{ individual.name }} - {{ individual.mobileNumber }}
...
</p>
*ngFor
循环拥有相同的内容。为了简化,我们创建一个可以重复使用的 ng-template
。
<ng-template let-individual #individualParagraphContent>
{{ individual.name }} - {{ individual.mobileNumber }}
...
<ng-template>
现在我们想要像这样使用它,例如:
<p *ngFor="let individual of puppies">
<ng-content *ngTemplateOutlet="individualParagraphContent;
context: {individual: individual}">
</ng-content>
</p>
在这里我失败了。我找到了整个*ngFor
循环在模板中以及如何从组件本身传递值的示例,但是我没有成功将<ng-template>
插入到一个for循环中并正确传递变量(individual)。
编辑
已解决。一切都没问题,但是ng-template
中的初始化有问题。
<ng-template let-individual="individual" #individualParagraphContent>
[ngTemplateOutlet] =
而不是* ngTemplateOutlet =
时,似乎模板不再被呈现...我尝试以不同方式使用ngTemplateOutletContext
,但仍然没有找到正确的方法/: - sevic<ng-template let-individual #individualParagraphContent>
正确:<ng-template let-individual="individual" #individualParagraphContent>
谢谢! - sevic[ngTemplateOutlet]
是在ngFor*
的情况下使用的:
- Julien METRAL