Angular4模板中的嵌套循环,没有嵌套元素

时间:2018-04-09 15:52:20

标签: javascript angular typescript ionic3 angular2-template

我想在没有嵌套元素的角度模板中嵌套循环。

e.g。伪代码:

component.ts

let titles: string[];
let content: { title: string, text: string }[];

getContentByTitle(t: string) {
  return this.content.filter(c => c.title === t);
}

template.html

<div myDirective *ngFor="let title of titles">
 {{title}}
 <div myDirective *ngFor="content of getContentByTitle(title)">
  {{content.text}}
  </div>
</div>

但这会影响我的div。我试图创建一个平面列表,按:

<div myDirective>
{{title}}
</div>
<div myDirective>
{{content.text}}
</div>
<div myDirective>
{{content.text}}
</div>
<div myDirective>
{{title}}
</div>
<div myDirective>
{{content.text}}
</div>
etc...

这可能吗?

2 个答案:

答案 0 :(得分:4)

在这种情况下,您可以使用ng-container,您将编写嵌套代码,但输出不会嵌套。

<ng-container *ngFor="let title of titles">
  <div myDirective>
   {{title}}
  </div>
  <ng-container *ngFor="text of getContentByTitle(title)">
    <div myDirective>
      {{text}}
    </div>
  </ng-container>
</ng-container>

来自Angular doc ng-container

Angular <ng-container>是一个不会干扰样式或布局的分组元素,因为Angular不会将它放在DOM中。

我希望它可以帮到你!

答案 1 :(得分:1)

使用ng-container

<div myDirective>
  <ng-container *ngFor='let o of objects'>
     {{o}}
  </ng-container>
</div>

它展开为:

<div myDirective>
  {{o}}{{o}}{{o}}{{o}}...
</div>