当前位置: 首页 > 知识库问答 >
问题:

同一元素上的*ngIf和* ngFor重复]

夏立果
2023-03-14

当我在同一个元素上使用*ngFor*ngIf时,我遇到了一个问题。

  <div
    *ngFor="let recipeStep of RecipeSteps; let i = index"
    *ngIf="position === i">
    {{ recipeStep }}
  </div>

  <button ion-button small (click)="previous()">Previous</button>
  <button ion-button small (click)="next()">Next</button>

我知道简单的解决方案是在新元素上移动*ngIF。例如:

<ng-container *ngIf="position === i">
 <div *ngFor="let recipeStep of RecipeSteps; let i = index">
  {{ recipeStep }}
 </div>
<ng-container>

但是当我使用这个解决方案时,我不能使用i变量。并且这个解决方案隐藏了上的所有元素

所以,这个扣子现在没用了

<button ion-button small (click)="previous()">Previous</button>
<button ion-button small (click)="next()">Next</button>

这个字体填充

position: number;
ionViewDidLoad() {
  this.position = 1; 
}

next() {
  this.position = this.position + 1;
}
previous() {
  this.position = this.position - 1;
}

我的问题是在同一个元素上使用*ngFor*ngI有不同的方法吗。

如果没有办法,还有其他方法可以使这些按钮有用吗


共有2个答案

喻嘉泽
2023-03-14

正如你在这里的答案中看到的,Angular 不支持一个元素上的多个结构指令。

您需要在*ng中使用*ng如果

<div *ngFor="let recipeStep of RecipeSteps; let i = index">
  <div *ngIf="position === i">
   {{ recipeStep }}
  </div>
</div>

常睿范
2023-03-14

你只需要把 ngIf 和 ngFor 反过来:

 <div *ngFor="let recipeStep of RecipeSteps; let i = index">
  <ng-container *ngIf="position === i">{{ recipeStep }}</ng-container>
 </div>
 类似资料:
  • 我遇到需要 *ngIf 和 *ngFor 指令的情况。我在堆栈上找到了很多答案,但对于这种情况没有答案。 我有一个表格,我在其中循环浏览对象数组并在标题中动态写入单元格: 我想显示/隐藏对象是否包含设置为 true 的可见值。我怎样才能做到这一点?

  • 我有一个问题,试图在同一个元素上使用Angular的和。 当尝试在中循环遍历集合时,该集合被视为,因此在尝试访问模板中的属性时失败。 我知道简单的解决方案是将向上移动一个级别,但是对于像在中循环列表项这样的场景,如果集合是空的,我会得到一个空的,或者我的被包装在冗余容器元素中。 示例在这个plnkr。 注意控制台错误: 我做错什么了还是这是一个错误?

  • 在我的 Angular 5 应用程序中,我正在循环创建 元素: 但是我只想在满足某些条件的情况下显示该行。我知道我不能一起使用和,但我不知道如何绕过这个问题。 我看到一篇文章说使用构造在tr中添加一个模板,但这似乎不再是有效的语法。如果我这样尝试: 然后我得到运行时错误。 应用组件。html:14错误错误:StaticInjectorError(AppModule)[NgIf-

  • 我试图使用ngFor显示选项列表,但只满足某些条件,是否可以一起使用ngFor和ngIF来实现这一点?

  • 在下面的代码中,我试图在< code >选项卡下显示所有< code >项目(对象),它们应该基于它们的类别。 类别必须相等。 编辑:如果还不清楚,请看这里。 我正在尝试遍历选项卡并将每个选项卡的名称添加到选项卡的“模板”中。 然后,我尝试遍历项目,如果项目的类别与选项卡的类别匹配,那么它将显示在选项卡下。 出于某种原因,它似乎不起作用。我做错什么了吗?< br >请原谅我和我的逻辑,过去两天一直

  • 我需要将*ngFor循环绑定到div,但我也需要仅在满足*ngIF条件后显示它。 但是Angular 4不会让你把它们结合起来。 我的代码: 我得到以下错误: 不能在一个元素上有多个模板绑定。只使用一个名为“模板”或以*为前缀的属性 那么你如何着手去做呢?