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

Angular Material 14升级至15后<mat-list-item>中spacer失效如何恢复?

Angular 15中恢复mat-list-item的左右对齐间距效果

Angular 15升级后,Angular Material对mat-list-item的默认布局实现做了调整,改用flexbox布局,导致原来依赖自定义spacer标签实现的名称左对齐、按钮右对齐效果失效。可以通过以下几种方法恢复该布局:

方法一:调整自定义spacer的CSS样式

保持原有HTML结构不变,给.spacer类添加flex布局适配样式:

.spacer {
  flex: 1 1 auto;
}

由于mat-list-item现在是flex容器,该样式会让spacer自动填充名称与按钮之间的剩余空间,实现两端对齐。

方法二:使用Angular Material内置的mat-spacer类

替换自定义的span.spacer为Angular Material提供的mat-spacer组件,无需额外编写CSS:

<mat-nav-list class="programs">
    <mat-list-item *ngFor="let dataObject of filteredPrograms" (click)="selectProgram(dataObject)">
        {{dataObject.programName}}
        <div class="mat-spacer"></div>
        <button mat-icon-button (click)="deleteProgram(dataObject); $event.stopPropagation()">
            <mat-icon>delete</mat-icon>
        </button>
    </mat-list-item>
</mat-nav-list>

mat-spacer类内置了flex: 1 1 auto样式,完美适配flex布局下的空间填充需求。

方法三:直接通过flex布局属性实现两端对齐

无需额外的spacer元素,给mat-list-item添加flex布局样式,利用justify-content实现左右对齐:

mat-list-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

修改后的HTML结构更简洁:

<mat-nav-list class="programs">
    <mat-list-item *ngFor="let dataObject of filteredPrograms" (click)="selectProgram(dataObject)">
        {{dataObject.programName}}
        <button mat-icon-button (click)="deleteProgram(dataObject); $event.stopPropagation()">
            <mat-icon>delete</mat-icon>
        </button>
    </mat-list-item>
</mat-nav-list>

justify-content: space-between会自动将子元素分别对齐容器的左右两端,达成预期布局效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:25:04