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

Angular 如何按条件为元素包裹带matBadge的span标签?

你之前的写法本身也无法正常运行,因为Angular的模板插值{{ }}仅支持输出表达式计算结果,不能直接在内部编写HTML标签。符合规范的常用实现方案有两种:

方案1:全版本兼容方案(基于ng-template复用内容)

该方案不需要重复编写公共的链接代码,兼容所有Angular版本,也是最推荐的通用实现:

<!-- 定义可复用的链接模板 -->
<ng-template #linkTemplate>
  <a mat-button color="accent" [routerLink]="record.id">
    {{record[column.name]}}
  </a>
</ng-template>

<!-- 条件判断渲染结构 -->
<ng-container *ngIf="value1 > value2; else linkTemplate">
  <span matBadge="New" matBadgeOverlap="true">
    <ng-container *ngTemplateOutlet="linkTemplate"></ng-container>
  </span>
</ng-container>

方案2:Angular 17+ 简化控制流方案

如果你的项目已经升级到Angular 17及以上版本,可以使用原生的新控制流语法,写法更简洁直观:

@if (value1 > value2) {
  <span matBadge="New" matBadgeOverlap="true">
}
<a mat-button color="accent" [routerLink]="record.id">
  {{record[column.name]}}
</a>
@if (value1 > value2) {
  </span>
}

内容的提问来源于stack exchange,提问作者nandesuka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:09:01