Angular Material 核心控件 (2)

继续上一篇文章,我们继续介绍三个常用的重要控件:表格、分页和卡片。

表格

表格控件能够以行和列的方式,可视化地展示大量数据。并且,也支持排序和分页功能。

在使用表格控件时,需要导入 MatTableModule 模块:

import { MatTable } from "@angular/material/table”;

src/app/tables/tables.component.html 文件中,添加下列控件:

<table mat-table [dataSource]="dataSource" class="mat-elevation-z8”>

  <!-- 编号列 —>
  <ng-container matColumnDef=“position”>
    <th mat-header-cell *matHeaderCellDef> 编号 </th>
    <td mat-cell *matCellDef="let book"> {{book.position}} </td>
  </ng-container>

  <!-- 书名列 —>
  <ng-container matColumnDef=“name”>
    <th mat-header-cell *matHeaderCellDef> 书名 </th>
    <td mat-cell *matCellDef="let book"> {{book.name}} </td>
  </ng-container>

  <!-- 出版社列 —>
  <ng-container matColumnDef=“publisher”>
    <th mat-header-cell *matHeaderCellDef> 出版社 </th>
    <td mat-cell *matCellDef="let book"> {{book.publisher}} </td>
  </ng-container>

  <!-- 价格列 —>
  <ng-container matColumnDef=“price”>
    <th mat-header-cell *matHeaderCellDef> 价格 </th>
    <td mat-cell *matCellDef="let book"> {{book.price}} </td>
  </ng-container>

  <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
  <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>

首先,使用 mat-table 指令的 dataSource 属性 定义了要在表格中显示的数据,数据类型可以是数组,也可以是可观察的流数据 (observable stream)。

然后,使用 matColumnDef 指令定义了四个列模板。在模板中,指定列的名称,标题名和要显示的单元格数据。

最后,使用 mat-header-row 指令和 mat-row 指令定义了行模板,描述了如何渲染标题和数据行的内容。

页面显示效果:

数据表格

分页

在检索大量数据时,考虑到性能原因,我们不会一次性检索全部数据,而是分页进行展示。这时,就可以使用分页控件。

在使用分页控件时,需要导入 MatPaginatorModule 模块:

import { MatPaginatorModule } from "@angular/material/paginator”;

src/app/paginators/paginators.component.html 文件中,添加下列控件:

<mat-paginator [length]=“length”
               [pageSize]=“pageSize”
               [pageSizeOptions]=“pageSizeOptions”
               (page)="pageEvent = $event”
               aria-label="选择分页”>
</mat-paginator>

每个分页控件需要指定每页要展示的条目数量(默认值 50)和全部条目数。当前显示第几页,可以使用 pageIndex 指定,默认显示第一页(pageIndex=0)。

页面尺寸选项 pageSizeOptions 可以显示一个下拉框,用户可以选择每页显示的条目数量。

页面显示效果:

分页控件

卡片

卡片可以看作是内容的一个容器,组合使用文字,照片和按钮等表达一个主题。

Angular Material 提供了很多预设的功能区域, 开发人员可以直接在卡片组件中使用:

| 指令 | 描述 |
| --- | — |
| <mat-card-title> | 卡片标题 |
| <mat-card-subtitle> | 卡片子标题 |
| <mat-card-content> | 卡片的主要内容 |
| <img mat-card-image> | 卡片图片 |
| <mat-card-actions> | 操作按钮容器 |
| <mat-card-footer> | 卡片底角 |

在使用卡片控件时,需要导入 MatCardModule 模块:

import { MatCardModule } from "@angular/material/card”;

src/app/cards/cards.component.html 文件中,添加下列控件:

<mat-card class="example-card”>
  <mat-card-header>
    <div mat-card-avatar class="example-header-image"></div>
    <mat-card-title>三体</mat-card-title>
    <mat-card-subtitle>刘慈欣 著/2019-07-01</mat-card-subtitle>
  </mat-card-header>
  <img mat-card-image src="http://www.lowtea.vip/wp-content/uploads/2022/05/三体封面1.png" alt="三体封面”>
  <mat-card-content>
    <p>
      慈欣基于科学事实,用大胆的想象和严谨的推断,在三体星系行星中构建了一个外星文明形态,并描绘了该文明不可捉摸的数百次的毁灭和重生。
    </p>
  </mat-card-content>
  <mat-card-actions>
    <button mat-button>喜欢</button>
    <button mat-button>分享</button>
  </mat-card-actions>
</mat-card>

页面显示效果:

卡片控件
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355

推荐阅读更多精彩内容