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

Angular Material是否支持列表嵌套?官方文档无示例求助

Angular Material 嵌套列表实现方案

当然可以在Angular Material中实现嵌套列表!你提到的multiline list(多行列表)其实是用来处理单条列表项内的多行文本内容(比如标题+副标题的组合),并不是用来实现层级嵌套的结构,这应该就是你操作后出现问题的核心原因~

基础嵌套列表实现

Angular Material原生支持通过嵌套mat-list组件来实现层级列表,下面是最基础的示例代码:

<mat-list>
  <!-- 父级列表项 -->
  <mat-list-item>
    <span>父级项 1</span>
    <!-- 嵌套子列表,通过margin-left实现层级缩进 -->
    <mat-list style="margin-left: 24px;">
      <mat-list-item>子级项 1-1</mat-list-item>
      <mat-list-item>子级项 1-2</mat-list-item>
    </mat-list>
  </mat-list-item>

  <mat-list-item>
    <span>父级项 2</span>
    <mat-list style="margin-left: 24px;">
      <mat-list-item>子级项 2-1</mat-list-item>
      <mat-list-item>子级项 2-2</mat-list-item>
      <mat-list-item>子级项 2-3</mat-list-item>
    </mat-list>
  </mat-list-item>
</mat-list>

带展开/折叠功能的嵌套列表(进阶场景)

如果需要实现可交互的展开/折叠嵌套列表,可以结合mat-expansion-panel组件来实现,这是实际项目中更常用的交互模式:

<mat-list>
  <mat-list-item *ngFor="let parentItem of parentItems">
    <mat-expansion-panel style="width: 100%;">
      <mat-expansion-panel-header>
        <mat-panel-title>
          {{ parentItem.title }}
        </mat-panel-title>
      </mat-expansion-panel-header>
      <!-- 展开后显示的子列表 -->
      <mat-list>
        <mat-list-item *ngFor="let childItem of parentItem.children">
          {{ childItem.title }}
        </mat-list-item>
      </mat-list>
    </mat-expansion-panel>
  </mat-list-item>
</mat-list>

对应的组件类逻辑代码:

import { Component } from '@angular/core';

// 定义列表项数据结构
interface ListItem {
  title: string;
  children?: ListItem[];
}

@Component({
  selector: 'app-nested-list',
  templateUrl: './nested-list.component.html',
})
export class NestedListComponent {
  // 模拟层级列表数据
  parentItems: ListItem[] = [
    {
      title: '父级项 1',
      children: [
        { title: '子级项 1-1' },
        { title: '子级项 1-2' }
      ]
    },
    {
      title: '父级项 2',
      children: [
        { title: '子级项 2-1' },
        { title: '子级项 2-2' },
        { title: '子级项 2-3' }
      ]
    }
  ];
}

帮你理清的关键区别

你之前混淆的multiline list,正确用法是给单个列表项添加多行内容,比如:

<mat-list>
  <mat-list-item>
    <h3 matLine>主标题</h3>
    <p matLine>副标题/补充描述文本</p>
  </mat-list-item>
</mat-list>

它和嵌套列表的核心区别是:一个是单列表项内部的多行内容,一个是列表之间的层级嵌套结构,不要搞混哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:12:26