【问题标题】:Angular 2+ NgTemplateOutlet inside ngForngFor内的Angular 2+ NgTemplateOutlet
【发布时间】:2019-01-28 10:42:38
【问题描述】:

我们有一些数组,例如:

  • 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 循环在模板中的示例,以及如何从组件本身传递值,但我没有设法将 &lt;ng-template&gt; 插入 for 循环并正确传递变量(个人)。

编辑 解决了。一切都很好,但 ng-template 中的初始化

<ng-template let-individual="individual" #individualParagraphContent>

【问题讨论】:

    标签: angular angular2-template ngfor ng-template angular2-ngcontent


    【解决方案1】:

    试试这样的:

    <ng-container
        *ngFor="let individual of heroes"
        [ngTemplateOutlet]="individualParagraphContent"
        [ngTemplateOutletContext]="{individual: individual}"></ng-container>
    

    对于模板:

    <ng-template let-individual="individual" #individualParagraphContent>
        <p>
           {{ individual.name }} - {{ individual.mobileNumber }}
           ...
        </p>
    <ng-template>
    

    let-(x)="上下文中 x 的键"

    【讨论】:

    • 感谢您的回答!一旦我们使用[ngTemplateOutlet]= 而不是*ngTemplateOutlet=,模板似乎就不再被渲染......我尝试以不同的方式使用ngTemplateOutletContext,但我仍然没有找到正确的/:
    • 啊,但仍然感谢回答我找到了解决方案!问题示例中的所有内容都很好,但是模板。错误:&lt;ng-template let-individual #individualParagraphContent&gt; 正确:&lt;ng-template let-individual="individual" #individualParagraphContent&gt; 谢谢!
    • 是的,抱歉,[ngTemplateOutlet] 用于ngFor* 的情况:&lt;ng-container *ngFor="let individual of puppies" [ngTemplateOutlet]="individualParagraphContent" [ngTemplateOutletContext]="{ individual: individual }"&gt;&lt;/ng-container&gt;
    猜你喜欢
    • 2018-06-13
    • 2017-09-20
    • 2019-08-23
    • 2017-02-17
    • 1970-01-01
    • 2018-10-03
    • 2017-04-13
    • 2018-10-13
    • 2018-06-01
    相关资源
    最近更新 更多