You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中*ngFor内嵌套*ngIf时换行失效问题求助

Angular中ngFor内嵌套ngIf时换行失效问题求助

嘿,我来帮你捋捋问题出在哪,再给几个实用的解决办法~

首先看你最初的代码:第一个例子里,你把<br>直接放在ng-container里,每个循环项都会输出{{row.ErrorCode}}和<br>,浏览器解析后自然每个错误码后面都有换行,显示正常。

但第二个例子里,你把<br>塞进了带*ngIf的<span>里面,这就导致只有当row.ErrorCode存在时才会输出<br>——哪怕两个错误码都存在,也可能因为<span>是内联元素,浏览器渲染时的换行效果不如预期,才出现了错误码连在一起的情况。

给你几个靠谱的解决方案:

方法1:把换行移到ngIf结构外面

不管有没有错误码,每个循环项后面都统一加上<br>,确保每个条目都能换行:

<ng-container *ngFor="let row of moreInfoData.errorInformationArray; let i = index"  >
  <span *ngIf="row.ErrorCode; else noErrorCode">
    {{row.ErrorCode}}
  </span>
  <ng-template #noErrorCode>N/A</ng-template>
  <br>
</ng-container>

方法2:用块级元素代替内联的span

<div>是块级元素,每个div会自动独占一行,不需要额外加<br>,还更符合语义化:

<ng-container *ngFor="let row of moreInfoData.errorInformationArray; let i = index"  >
  <div *ngIf="row.ErrorCode; else noErrorCode">
    {{row.ErrorCode}}
  </div>
  <ng-template #noErrorCode><div>N/A</div></ng-template>
</ng-container>

方法3:用更简洁的逻辑或写法

如果只是给row.ErrorCode设置默认值,完全可以不用单独的ng-template,一行代码搞定:

<ng-container *ngFor="let row of moreInfoData.errorInformationArray; let i = index"  >
  <div>{{ row.ErrorCode || 'N/A' }}</div>
</ng-container>

这个写法既简洁,又能通过div自动实现换行,一举两得~

备注:内容来源于stack exchange,提问作者Rich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:13:16