# ng-zorro-antd Component Documentation (中文) 本文件包含所有组件文档的聚合内容。总计 77 个组件。 --- # Documentation --- order: 0 title: Ant Design of Angular --- `ng-zorro-antd` 是遵循 Ant Design 设计规范的 Angular UI 组件库,主要用于研发企业级中后台产品。全部代码开源并遵循 MIT 协议,任何企业、组织及个人均可免费使用。
Ant Design + Angular
## 特性 - 提炼自企业级中后台产品的交互语言和视觉风格。 - 开箱即用的高质量 Angular 组件库,与 Angular 保持同步升级。 - 使用 TypeScript 构建,提供完整的类型定义文件。 - 支持 Zoneless 和 OnPush 模式,性能卓越。 - 数十个国际化语言支持。 - 深入每个细节的主题定制能力。 ## 支持环境 - 现代浏览器,[浏览器支持](https://angular.cn/reference/versions#browser-support) - 支持服务端渲染 - [Electron](https://www.electronjs.org/) | [Edge](https://godban.github.io/browsers-support-badges//)
Edge | [Firefox](https://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](https://godban.github.io/browsers-support-badges/)
Chrome | [Safari](https://godban.github.io/browsers-support-badges/)
Safari | [Opera](https://godban.github.io/browsers-support-badges/)
Opera | [Electron](https://godban.github.io/browsers-support-badges/)
Electron | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | last 2 versions | last 2 versions | last 2 versions | last 2 versions | last 2 versions | last 2 versions | ## 当前版本 [![npm package](https://img.shields.io/npm/v/ng-zorro-antd.svg?style=flat-square)](https://www.npmjs.org/package/ng-zorro-antd) ## 支持 Angular 版本 `ng-zorro-antd` 与 `@angular/core` 保持相同的主版本号,目前支持 Angular `^21.0.0` 版本。 ## 设计规范 与 Ant Design 设计规范定期同步,你可以在线查看[同步日志](https://github.com/NG-ZORRO/ng-zorro-antd/actions?query=workflow:"styles-sync")。 ## 安装 我们强烈推荐官方的 `@angular/cli` 工具链辅助进行开发,在实际项目开发中,它可以很好的满足对 TypeScript 代码的构建、调试、代理、打包部署等一系列工程化的需求。 ```bash $ ng new PROJECT_NAME $ cd PROJECT_NAME $ ng add ng-zorro-antd ``` > 如果你想了解更多CLI工具链的功能和命令,建议访问 [Angular CLI](https://github.com/angular/angular-cli) 了解更多 ## 链接 - [首页](https://ng.ant.design) - [Angular官方文档](https://angular.dev/) - [开发脚手架](https://angular.cn/tools/cli) - [TypeScript](https://www.typescriptlang.org/) - [RxJS](https://github.com/ReactiveX/rxjs) - [VSCode Snippet 插件](https://marketplace.visualstudio.com/items?itemName=cipchk.ng-zorro-vscode) ## 谁在使用 - [阿里巴巴](https://www.alibaba.com/) - [阿里云](https://www.aliyun.com/) - [思特沃克](https://www.thoughtworks.com/) - [招商银行](https://www.cmbchina.com/) - [共道科技](https://www.gongdao.com/) - [优速快递](https://www.uce.cn/) - [轻流](https://qingflow.com/) - [航天信息股份有限公司](https://www.aisino.com/) - [达观数据](https://datagrand.com/) - [Ververica](https://www.ververica.com/) - [Apache Flink](https://flink.apache.org/) - [Apache Zeppelin](https://zeppelin.apache.org/) - [Apache Submarine](https://submarine.apache.org/) - [Apache Metron](https://metron.apache.org/) - [Process Automation Group](https://pag.company/) - [ScentBird](https://www.scentbird.com/) - [Southern Institute of Technology](https://www.sit.ac.nz/) - [Hapify (Dynamic boilerplates tool)](https://hub.hapify.io/) > 这里列出了部分使用者,如果你的公司和产品使用了 NG-ZORRO,欢迎到 [这里](https://github.com/NG-ZORRO/ng-zorro-antd/issues/1142) 留言。 ## 如何贡献 在任何形式的参与前,请先阅读 [贡献者文档](https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/CONTRIBUTING.md)。如果你希望参与贡献,欢迎 [Pull Request](https://github.com/NG-ZORRO/ng-zorro-antd/pulls),或给我们 [报告 Bug](https://ng.ant.design/issue-helper/#/en)。 > 强烈推荐阅读 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)、[《如何向开源社区提问题》](https://github.com/seajs/seajs/issues/545) 和 [《如何有效地报告 Bug》](https://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html)、[《如何向开源项目提交无法解答的问题》](https://zhuanlan.zhihu.com/p/25795393),更好的问题更容易获得帮助。 ## 社区互助 如果您在使用的过程中碰到问题,可以通过下面几个途径寻求帮助,同时我们也鼓励资深用户通过下面的途径给新人提供帮助。 通过 Stack Overflow 或者 Segment Fault 提问时,建议加上 `ng-zorro-antd` 标签。 1. [Stack Overflow](https://stackoverflow.com/questions/tagged/ng-zorro-antd)(English) 2. [Segment Fault](https://segmentfault.com/t/ng-zorro)(中文) 3. [Discussions · NG-ZORRO/ng-zorro-antd](https://github.com/NG-ZORRO/ng-zorro-antd/discussions) 4. 加入钉钉 NG-ZORRO 自助服务群(中文) ding talk qr-code --- --- order: 7 title: LLMs.txt tag: new --- 本指南介绍如何让 AI 工具更好地理解 NG-ZORRO 组件库。 ## 什么是 LLMs.txt? 我们支持通过 [LLMs.txt](https://llmstxt.org/) 文件向大语言模型(LLMs)提供 `ng-zorro-antd` 文档。此功能可帮助 AI 工具更好地理解我们的组件库、API 及使用模式。 ## 可用资源 ### LLMs.txt 聚合文件 我们提供多个聚合文件来帮助 AI 工具访问文档: | 文件 | 说明 | | ---------------------------------------------------------- | ------------------------------------------ | | [llms.txt](https://ng.ant.design/llms.txt) | 导航文件,包含所有文档和组件的链接 | | [llms-full.txt](https://ng.ant.design/llms-full.txt) | 完整的组件文档(英文),包含实现细节和示例 | | [llms-full-cn.txt](https://ng.ant.design/llms-full-cn.txt) | 完整的组件文档(中文) | ### 单个组件文档 通过 `.md` 后缀直接访问单个组件文档: - `https://ng.ant.design/components/button.en.md`(英文) - `https://ng.ant.design/components/button.cn.md`(中文) ## 在 AI 工具中的使用 | 工具 | 说明 | 提示词 | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- | | **Cursor** | 使用 `@Docs` 功能引入 LLMs.txt,或添加提示词到 `.cursor/rules`。[文档](https://docs.cursor.com/zh/context/@-symbols/@-docs) | `阅读 https://ng.ant.design/llms-full-cn.txt 并理解 NG-ZORRO 组件库,在编写 NG-ZORRO 代码时使用这些知识。` | | **Windsurf** | 添加提示词到 `.windsurf/rules` 或使用 cascade memories。[文档](https://docs.windsurf.com/windsurf/cascade/memories) | `阅读 https://ng.ant.design/llms-full-cn.txt 并理解 NG-ZORRO 组件库,在编写 NG-ZORRO 代码时使用这些知识。` | | **Claude Code** | 添加到 CLAUDE.md 或使用 `/memory` 持久化。[文档](https://docs.anthropic.com/en/docs/claude-code) | `阅读 https://ng.ant.design/llms-full-cn.txt 并理解 NG-ZORRO 组件库,在编写 NG-ZORRO 代码时使用这些知识。` | | **GitHub Copilot** | 添加到 `.github/copilot-instructions.md`。[文档](https://docs.github.com/zh/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot) | `阅读 https://ng.ant.design/llms-full-cn.txt 并理解 NG-ZORRO 组件库,在编写 NG-ZORRO 代码时使用这些知识。` | | **Codex** | 添加到 `.codex/settings.json` 或 AGENTS.md。[文档](https://github.com/openai/codex) | `阅读 https://ng.ant.design/llms-full-cn.txt 并理解 NG-ZORRO 组件库,在编写 NG-ZORRO 代码时使用这些知识。` | | **Gemini CLI** | 使用 `--context` 参数或添加到 `.gemini/config.json`。[文档](https://ai.google.dev/gemini-api/docs?hl=zh-cn) | `阅读 https://ng.ant.design/llms-full-cn.txt 并理解 NG-ZORRO 组件库,在编写 NG-ZORRO 代码时使用这些知识。` | | **Trae** | 添加到项目的知识源设置中。[文档](https://trae.ai/docs) | `阅读 https://ng.ant.design/llms-full-cn.txt 并理解 NG-ZORRO 组件库,在编写 NG-ZORRO 代码时使用这些知识。` | | **Qoder** | 添加到 `.qoder/config.yml` 或在对话中使用 `@docs`。[文档](https://docs.qoder.com/) | `阅读 https://ng.ant.design/llms-full-cn.txt 并理解 NG-ZORRO 组件库,在编写 NG-ZORRO 代码时使用这些知识。` | | **Neovate Code** | 运行 `neovate` 并使用提示词描述任务。[文档](https://github.com/neovateai/neovate-code) | `阅读 https://ng.ant.design/llms-full-cn.txt 并理解 NG-ZORRO 组件库,在编写 NG-ZORRO 代码时使用这些知识。` | --- --- order: 7 title: 全局配置项 --- 我们给众多组件添加了**全局配置**功能,你可以通过全局配置来定义组件的默认行为,从而减少在模板中需要写的代码(让你的代码更加清爽),还能在运行时修改全局配置项。 ## 如何使用 想要为某些组件提供默认配置项, 可以使用 `provideNzConfig` 函数,传入一个符合 `NzConfig` 接口的对象。例如: ```typescript import { NzConfig, provideNzConfig } from 'ng-zorro-antd/core/config'; const ngZorroConfig: NzConfig = { // 注意组件名称没有 nz 前缀 message: { nzTop: 120 }, notification: { nzTop: 240 } }; export const appConfig: ApplicationConfig = { providers: [provideNzConfig(ngZorroConfig)] }; ``` 这些全局配置项将会被注入 `NzConfigService` 当中并保存。 ### 提供模板 一些组件支持传递模板 `TemplateRef` 作为默认参数,我们来了解一下如何做到这一点。 最简单的方式是在应用的根组件中调用 `NzConfigService` 的相关方法: ```typescript import { NzConfigService } from 'ng-zorro-antd/core/config'; export class AppComponent implements OnInit { private nzConfigService = inject(NzConfigService); @ViewChild('nzIndicatorTpl', { static: true }) nzIndicator!: TemplateRef; ngOnInit(): void { this.nzConfigService.set('spin', { nzIndicator: this.nzIndicator }); } } ``` 然而这种方式可能会让你的 AppComponent 相当臃肿,并违反关注分离原则。 因此,当你的项目比较大时,我们建议你使用一个 `FactoryProvider`,如下所示: ```typescript // The module-level Component which contains template references. // Exporting is required for AOT compatibility @Component({ template: ` ` }) export class GlobalTemplatesComponent { @ViewChild('nzIndicatorTpl', { static: true }) nzIndicator!: TemplateRef; } // The Factory function const nzConfigFactory = (): NzConfig => { const environmentInjector = inject(EnvironmentInjector); const { nzIndicator } = createComponent(component, { environmentInjector }).instance; return { spin: { nzIndicator } }; }; export const appConfig: ApplicationConfig = { providers: [ { // The FactoryProvider provide: NZ_CONFIG, useFactory: nzConfigFactory } ] }; ``` ## 局部生效 开发者可以利用 Angular 自带的依赖注入机制,在特定组件内重新设定 `NZ_CONFIG`, 该设定不会影响该组件以外的配置。 ```typescript @Component({ providers: [ // 重设本地 NzConfigService NzConfigService, { provide: NZ_CONFIG, useValue: { button: { nzSize: 'large' } } } ] }) ``` 也可以使用 `useFactory` 将全局配置与区域配置合并后生效 > 注意:全局配置在初始化之后修改将不会影响该部分配置结果 ```typescript @Component({ providers: [ // 重设本地 NzConfigService NzConfigService, { provide: NZ_CONFIG, useFactory: () => { // 获取全局 NzConfigService const globalConfig = inject(NzConfigService, { skipSelf: true }).getConfig(); const localConfig = { select: { nzVariant: 'borderless' } }; // 合并全局配置与本地配置 const mergedConfig = { ...globalConfig, ...localConfig }; return mergedConfig; }, } ] }) ``` ## 动态变更 你可以通过调用 `NzConfigService` 的 `set` 方法来改变某个组件的配置项,例如: ```typescript import { NzConfigService } from 'ng-zorro-antd/core/config'; @Component({}) export class ChangeZorroConfigComponent { private nzConfigService = inject(NzConfigService); onChangeConfig() { this.nzConfigService.set('button', { nzSize: 'large' }); } } ``` 所有的组件实例都会响应这些改变(只要它们没有被单独赋值)。 ## 优先级说明 对于任何一个属性来说,各个来源的值的优先级如下: **为组件的某个实例单独设置的值(通过模板或类似于 `service.create` 的方法)> 通过 `NZ_CONFIG` 提供的全局默认值(包括 `set` 方法) > NG-ZORRO 内置的默认值。** 例如,你想创建一个 NzNotification 组件: 1. 你在调用 `NzNotificationService.success` 时传递参数 `{ nzDuration: 6000 }` 2. 你通过 `NZ_CONFIG` 提供了全局默认值 `{ notification: { nzDuration: 5000 } }` 3. NG-ZORRO 内部默认值为 4500 最终该 Notification 将会显示 6000 毫秒。 ## 可配置项 `NzConfig` 接口提供的类型定义信息能够帮助你找到所有支持全局配置项的组件和属性。另外,每个组件的文档都会指出哪些属性可以通过全局配置项的方式指定。 --- --- order: 6.1 title: 动态主题(实验性) --- 除了 [less 定制主题](/docs/customize-theme/zh) 外,我们还提供了 CSS Variable 版本以支持动态切换主题能力。 > 该功能通过动态修改 CSS Variable 实现,在 IE 中页面将无法正常展示 ## 如何使用 ### 引入 ng-zorro-antd.variable.min.css 替换当前项目引入样式文件为 CSS Variable 版本: ```diff - @import "~ng-zorro-antd/ng-zorro-antd.min.css"; + @import "~ng-zorro-antd/ng-zorro-antd.variable.min.css"; ``` 注:如果你使用了 `babel-plugin-import`,需要将其去除。 ### 静态方法配置 利用全局配置项功能,在根注入器中根据注入令牌 `NZ_CONFIG` 提供一个符合 `NzConfig` 接口的对象,例如: ```typescript import { NzConfig, provideNzConfig } from 'ng-zorro-antd/core/config'; const ngZorroConfig: NzConfig = { // 注意组件名称没有 nz 前缀 theme: { primaryColor: '#1890ff' } }; export const appConfig: ApplicationConfig = { providers: [provideNzConfig(ngZorroConfig)] }; ``` 这些全局配置项将会被注入 `NzConfigService` 当中并保存。 ### 动态变更 你可以通过调用 `NzConfigService` 的 `set` 方法来改变 CSS Variable 样式配置项,例如: ```typescript import { NzConfigService } from 'ng-zorro-antd/core/config'; @Component({ selector: 'app-change-zorro-config' }) export class ChangeZorroConfigComponent { private nzConfigService = inject(NzConfigService); onChangeConfig() { this.nzConfigService.set('theme', { primaryColor: '#1890ff' }); } } ``` 所有的组件实例都会响应这些改变(只要它们没有被单独赋值)。 ## 冲突解决 默认情况下,CSS Variable 会以 `--ant` 作为前缀。当你的项目中引用多份 css 文件时,可以通过修改前缀的方式避免冲突。 ### 编译 less 由于前缀变更,你需要重新生成一份对应的 css 文件。 ```bash lessc --js --modify-var="ant-prefix=custom" ng-zorro-antd/ng-zorro-antd.variable.less modified.css ``` ### 相关变更 为了实现 CSS Variable 并保持原始用法兼容性,我们于 `ng-zorro-antd.xxx.less` 文件中添加了 `@root-entry-name: xxx;` 入口注入以支持 less 动态加载对应的 less 文件。一般情况下,你不需要关注该变化。 --- --- order: 8 title: 动画开关 tag: updated --- > 从 v21 版本开始,NG-ZORRO 完全使用 [native animation](https://angular.cn/guide/animations) 实现动画效果,你可以按需移除 `@angular/animations` 依赖。 NG-ZORRO 允许开发者关闭动画效果,您可以通过添加对应指令或者配置来设置动画的开关,也可以通过全局配置关闭所有动画。 ### 在全局或组件中关闭 `provideNoopAnimations` 已被标记为废弃,你可以通过 `provideNzNoAnimation` 来关闭动画。 ```ts import { provideNzNoAnimation } from 'ng-zorro-antd/core/animation'; // 在全局中关闭动画 export const appConfig: ApplicationConfig = { providers: [ // ... provideNzNoAnimation() ] }; // 在组件中关闭动画 @Component({ providers: [ // ... provideNzNoAnimation() ] }) ``` ### 在模版中关闭 引入 `NzNoAnimationDirective` 指令,在期望关闭动画的组件上添加 `nzNoAnimation` 指令。 ```html
    ``` ### 在服务中关闭 在调用组件服务时传入以下配置来关闭动画。 #### Modal, Drawer ```ts { // ... nzNoAnimation: true; } ``` #### Notification, Message ```ts { // ... nzAnimate: false; } ``` ### 关闭波浪效果 部分组件(如:Button)为了支持波纹效果,使用了动态样式,因此无法直接使用样式覆盖。 你可以通过 `provideNzWave` 或者使用 `provideNzNoAnimation` 来关闭波浪效果。 ```ts import { provideNzWave } from 'ng-zorro-antd/core/wave'; export const appConfig: ApplicationConfig = { providers: [provideNzWave({ disabled: true })] }; ``` --- --- order: 3 title: 国际化 --- 目前的默认文案是中文,如果需要使用其他语言,可以在初始化时进行配置,也可以在运行中随时修改,可以参考下面的方案。 你也可以在新建项目时通过 `ng add ng-zorro-antd` 设置国际化语言。 ## 配置默认国际化语言 `ng-zorro-antd` 提供了几个配置型 token 用于全局配置国际化文案和日期,`NZ_I18N`用于国际化文案,`NZ_DATE_CONFIG`用于修改日期相关特性。 此外,我们默认使用 Angular 的语言包来进行日期格式化(需要引入相应的 Angular 语言包)。 另外,我们还提供了可选的 `NZ_DATE_LOCALE` 用于 date-fns 方式来格式化本地日期(依赖 [`date-fns`](https://date-fns.org/docs/I18n) 库,详见下方的`如何使用 date-fns 进行日期格式化`)。 ```ts /** 导入需要使用的 Angular 语言包 **/ import { registerLocaleData } from '@angular/common'; import en from '@angular/common/locales/en'; registerLocaleData(en); /** 配置 ng-zorro-antd 国际化 **/ import { provideNzI18n, en_US } from 'ng-zorro-antd/i18n'; /** 静态配置 **/ export const appConfig: ApplicationConfig = { providers: [ // ... provideNzI18n(en_US) ] }; ``` ## 与 Angular 应用本地化方案联动 当使用 Angular [应用本地化方案](https://angular.cn/guide/i18n) 时,可以根据 [LOCALE_ID](https://angular.cn/api/core/LOCALE_ID) 自动切换 `ng-zorro-antd` 默认语言 ```typescript /** 导入需要使用的语言包 **/ import { LOCALE_ID } from '@angular/core'; import { registerLocaleData } from '@angular/common'; import en from '@angular/common/locales/en'; import zh from '@angular/common/locales/zh'; registerLocaleData(en); registerLocaleData(zh); /** 配置 ng-zorro-antd 国际化 **/ import { en_US, provideNzI18n, zh_CN } from 'ng-zorro-antd/i18n'; /** 根据 LOCALE_ID 自动切换 ng-zorro-antd 语言 **/ export const appConfig: ApplicationConfig = { providers: [ // ... provideNzI18n(() => (inject(LOCALE_ID) === 'zh' ? zh_CN : en_US)) ] }; ``` ## 运行时修改 `ng-zorro-antd` 提供了 `NzI18nService` 服务用于动态修改国际化文案。 ```ts import { en_US, NzI18nService } from 'ng-zorro-antd/i18n'; class SomeComponent { private i18n = inject(NzI18nService); switchLanguage() { this.i18n.setLocale(en_US); } } ``` 注意:`en_US` 是语言包名称,以下表格也遵循同样的规则。 ## 支持语言 | 语言包名 | 语言 | | -------- | -------------------- | | ar_EG | 阿拉伯 | | az_AZ | 阿塞拜疆 | | bg_BG | 保加利亚语 | | bn_BD | 孟加拉语(孟加拉国) | | by_BY | 白俄罗斯语 | | ca_ES | 加泰罗尼亚语 | | cs_CZ | 捷克语 | | da_DK | 丹麦语 | | de_DE | 德语 | | el_GR | 希腊语 | | en_AU | 英语(澳大利亚) | | en_GB | 英语 | | en_US | 英语(美式) | | es_ES | 西班牙语 | | et_EE | 爱沙尼亚语 | | fa_IR | 波斯语 | | fi_FI | 芬兰语 | | fr_BE | 法语(比利时) | | fr_CA | 法语(加拿大) | | fr_FR | 法语 | | ga_IE | 爱尔兰盖尔语 | | gl_ES | 加利西亚语(西班牙) | | he_IL | 希伯来语 | | hi_IN | 印地语 | | hr_HR | 克罗地亚语 | | hu_HU | 匈牙利 | | hy_AM | 亚美尼亚 | | id_ID | 印度尼西亚语 | | is_IS | 冰岛语 | | it_IT | 意大利语 | | ja_JP | 日语 | | ka_GE | 格鲁吉亚语 | | kk_KZ | 哈萨克语 | | km_KH | 高棉语 | | kmr_IQ | 北库尔德语 | | kn_IN | 卡纳达语 | | ko_KR | 韩语/朝鲜语 | | ku_IQ | 库尔德语 | | lt_LT | 立陶宛语 | | lv_LV | 拉脱维亚语 | | ml_IN | 马拉雅拉姆语 | | mn_MN | 蒙古语 | | ms_MY | 马来语 | | nb_NO | 挪威 | | ne_NP | 尼泊尔语 | | nl_BE | 荷兰语(比利时) | | nl_NL | 荷兰语 | | pl_PL | 波兰语 | | pt_BR | 葡萄牙语(巴西) | | pt_PT | 葡萄牙语 | | ro_RO | 罗马尼亚语 | | ru_RU | 俄罗斯语 | | sk_SK | 斯洛伐克语 | | sl_SI | 斯洛文尼亚 | | sr_RS | 塞尔维亚 | | sv_SE | 瑞典语 | | ta_IN | 泰米尔语 | | th_TH | 泰语 | | tr_TR | 土耳其语 | | uk_UA | 乌克兰语 | | ur_PK | 乌尔都语 (巴基斯坦) | | vi_VN | 越南语 | | zh_CN | 简体中文 | | zh_HK | 繁体中文 | | zh_TW | 繁体中文 | ## 如何使用 date-fns 进行日期格式化 对于日期的格式化,我们默认采用 Angular 的 DatePipe([语法参考](https://angular.cn/api/common/DatePipe)来实现(依赖Angular的locale语言包),但由于Angular自带的DatePipe并非按照ISO标准算法实现([issue #25380](https://github.com/angular/angular/issues/25380)),使用时周数的展示可能与预期不符(相关issue: [#2406](https://github.com/NG-ZORRO/ng-zorro-antd/issues/2406), [#2819](https://github.com/NG-ZORRO/ng-zorro-antd/issues/2819))。 所以我们新提供了`date-fns`方式([语法参考](https://date-fns.org/docs/format#description))来进行标准的日期格式化,您可以通过以下方式切换至 `date-fns`(切换后将影响所有日期类组件如Calendar/DatePicker的日期格式化): ```ts // 在 App Config 中设置 NZ_DATE_LOCALE 的值,将激活 date-fns 方式的日期格式化展示 import { enUS, ja } from 'date-fns/locale'; export const appConfig: ApplicationConfig = { providers: [{ provide: NZ_DATE_LOCALE, useValue: enUS }] }; // 运行时切换语言为日语 import { NzI18nService } from 'ng-zorro-antd/i18n'; export class AppComponent { private i18n = inject(NzI18nService); switchLanguage() { this.i18n.setDateLocale(ja); } } ``` 切换成功后,可以选择移除掉对 Angular Locales 包的依赖(删除下方代码)来减小打包体积(前提是代码对其无依赖): ```ts // 以下代码可根据需要移除 import { registerLocaleData } from '@angular/common'; import en from '@angular/common/locales/en'; registerLocaleData(en); ``` ### NZ_DATE_CONFIG 日期全局配置 默认配置如下: ```ts { /** 指定哪一天为一周的开始(null表示采用内部默认值,0表示星期日,1表示星期一,以此类推) */ firstDayOfWeek: null; } ``` ## date-fns 支持语言 [https://date-fns.org/docs/I18n#supported-languages](https://date-fns.org/docs/I18n#supported-languages) ## 如何更改默认国际化语言包配置 `ng-zorro` 中有些组件的文本依赖于国际化文本,例如 `nz-pagination` 中的 `size changer`, 这时候你可以修改国际化配置来更改 `size changer` 中的文本内容: ```ts import { en_US, provideNzI18n } from 'ng-zorro-antd/i18n'; const customLanguagePack = { en_US, ...{ Pagination: { items_per_page: 'per page' } } }; export const appConfig: ApplicationConfig = { providers: [provideNzI18n(customLanguagePack)] }; ``` --- --- order: 6 title: 定制主题 --- Ant Design 设计规范上支持一定程度的样式定制,以满足业务和品牌上多样化的视觉需求,包括但不限于主色、圆角、边框和部分组件的视觉定制。 ![Example](https://zos.alipayobjects.com/rmsportal/zTFoszBtDODhXfLAazfSpYbSLSEeytoG.png) Ant Design 的样式使用了 [Less](https://lesscss.org/) 作为开发语言,并定义了一系列全局/组件的样式变量,你可以根据需求进行相应调整,[默认样式变量](https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/components/style/themes/default.less) > Ant Design React 的主题定制文件在 `ng-zorro-antd` 中同样可以使用。 ## 使用预定义主题 ### 配置非定制主题 在初始化项目时,运行 `ng add ng-zorro-antd` 命令之后,选择不配置自定义主题文件,你的项目则会自动在 `angular.json` 中配置: ```json { "build": { "options": { "styles": ["./node_modules/ng-zorro-antd/ng-zorro-antd.min.css"] } } } ``` 当然,你也可以在 `angular.json` 中手动添加该配置。 ### 官方主题 除了默认主题外,我们还提供了三种官方主题,欢迎在项目中试用,并且给我们提供反馈。 - 🌑 暗黑主题 - 📦 紧凑主题 - ☁️ 阿里云主题 #### 方式一: Less 在样式文件全量,如 `style.less`,中引入 `ng-zorro-antd.less`、`ng-zorro-antd.dark.less`、`ng-zorro-antd.compact.less` 或 `ng-zorro-antd.aliyun.less` 覆盖主题变量。 ```less // 引入官方提供的默认 less 样式文件 @import '~ng-zorro-antd/ng-zorro-antd.less'; // 引入官方提供的暗黑 less 样式文件 //@import "~ng-zorro-antd/ng-zorro-antd.dark.less"; // 引入官方提供的紧凑 less 样式文件 //@import "~ng-zorro-antd/ng-zorro-antd.compact.less"; // 引入官方提供的阿里云 less 样式文件 //@import "~ng-zorro-antd/ng-zorro-antd.aliyun.less"; ``` #### 方式二: CSS 如果项目不使用 Less,可在 CSS 文件或者 `angular.json` 的 `styles` 字段中,全量引入 `ng-zorro-antd.css`、`ng-zorro-antd.dark.css`、`ng-zorro-antd.compact.css` 或者 `ng-zorro-antd.aliyun.css`。 样式文件中: ```css @import '~ng-zorro-antd/ng-zorro-antd.css'; /*@import "~ng-zorro-antd/ng-zorro-antd.dark.css";*/ /*@import "~ng-zorro-antd/ng-zorro-antd.compact.css";*/ /*@import "~ng-zorro-antd/ng-zorro-antd.aliyun.css";*/ ``` `angular.json` 中: ```json { "build": { "options": { "styles": ["node_modules/ng-zorro-antd/ng-zorro-antd.css"] } } } ``` ## 修改预定义主题 ### 方式一:在 Less 中覆盖主题变量 #### 引入预定义主题文件 在 `src/styles.less` 里引入预定义主题文件 (也可以在初始化项目运行 `ng add ng-zorro-antd` 命令之后,选择配置自定义主题文件): ```less // Custom Theming for NG-ZORRO // For more information: https://ng.ant.design/docs/customize-theme/en @import '../node_modules/ng-zorro-antd/ng-zorro-antd.less'; ``` #### 自定义样式变量 引入官方主题文件之后,再根据实际需求自定义覆盖主题样式变量的参数。例如,在以下样例中通过修改 `@primary-color` 的数值将预定义默认主题的基础色修改为 `#f5222d`: ```less // -------- 引入官方提供的 less 样式入口文件 ----------- @import '../node_modules/ng-zorro-antd/ng-zorro-antd.less'; // -------- 自定义参数覆盖 ----------- @primary-color: #f5222d; ``` ### 方式二:webpack 中覆盖主题变量 #### 覆盖为预定义主题变量 在 webpack 中使用 less-loader 按需引入: ```javascript const darkThemeVars = require('ng-zorro-antd/dark-theme'); const compactThemeVars = require('ng-zorro-antd/compact-theme'); module.exports = { module: { rules: [ { test: /\.less$/, loader: 'less-loader', options: { modifyVars: { hack: `true;@import "${require.resolve('ng-zorro-antd/style/color/colorPalette.less')}";`, ...darkThemeVars, ...compactThemeVars }, javascriptEnabled: true } } ] } }; ``` #### 覆盖为定制主题变量 Angular CLI 提供了 [custom-webpack](https://www.npmjs.com/package/@angular-builders/custom-webpack) 的 builder,可以通过该 builder 轻松的调整 webpack 中 [less-loader](https://github.com/webpack-contrib/less-loader) 的配置来进行主题配置。 1. 在 `angular.json` 中引入 `ng-zorro-antd.less` 文件 ```json { "styles": ["node_modules/ng-zorro-antd/ng-zorro-antd.less"] } ``` 2. 安装 `@angular-builders/custom-webpack` builder ```bash npm i -D @angular-builders/custom-webpack ``` 3. 新建 webpack 配置文件 `extra-webpack.config.js` ```javascript module.exports = { module: { rules: [ { test: /\.less$/, loader: 'less-loader', options: { modifyVars: { // 修改主题变量 'primary-color': '#1DA57A', 'link-color': '#1DA57A', 'border-radius-base': '2px' }, javascriptEnabled: true } } ] } }; ``` 4. 在 `angular.json` 中配置自定义 builder ```diff "architect": { "build": { - "builder": "@angular-devkit/build-angular:browser", + "builder": "@angular-builders/custom-webpack:browser", "options": { + "customWebpackConfig": { + "path": "./extra-webpack.config.js", + "mergeStrategies": { + "module.rules": "append" + }, + "replaceDuplicatePlugins": true + } }, }, "serve": { - "builder": "@angular-devkit/build-angular:dev-server", + "builder": "@angular-builders/custom-webpack:dev-server", } } ``` 更多在 Angular CLI 中定制 webpack 的文章可以参考 - [Angular Builder Document](https://www.npmjs.com/package/@angular-builders/custom-webpack) - [Angular CLI: Custom webpack Config](https://alligator.io/angular/custom-webpack-config/) - [Customize Webpack Configuration in Your Angular Application](https://netbasal.com/customize-webpack-configuration-in-your-angular-application-d09683f6bd22) 全部可被自定义 less 变量可以参考 [这里](https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/components/style/themes/default.less)。 ## 动态切换主题 我们为你准备了一个演示动态切换主题的项目,欢迎前往 [这里](https://github.com/yangjunhan/nz-themes) 查看。 ### 配置 angular.json 文件 1. 样式预处理器选项 `stylePreprocessorOptions` 在`angular.json` 中配置样式预处理器选项 `stylePreprocessorOptions` 并添加路径: ```json "stylePreprocessorOptions": { "includePaths": [ "src/styles/themes" ] }, ``` 于是,在项目组件样式文件里,无需相对路径,`src/styles/themes` 路径下的任意文件定义文件都可以从项目中的任何位置导入,例如: ```less // A relative path works @import 'src/styles/themes/mixin'; // But now this works as well @import 'mixin'; ``` 2. styles 里的 `bundleName` 和 `inject` 如果需要在项目运行时动态切换主题,你就需要为构建器配置好每个主题的全局上下文样式文件。继续以默认和暗黑主题为例,请在 `angular.json` 的 `styles` 选项数组里进行如下配置: ```json "styles": [ "src/styles.less", { "input": "src/styles/default.less", "bundleName": "default", "inject": false }, { "input": "src/styles/dark.less", "bundleName": "dark", "inject": false } ], ``` `bundleName` 指捆绑包的自定义 CSS 文件名称,方便了之后切换主题创建所需的 link 标签的 href 属性。`inject` 默认为 `true`,会将捆绑包注入。为了动态主题切换则需要将主题捆绑包从注入中排除。 ### 多主题定制 在多主题项目的情景下,每一个主题都应该创建一个单独的样式入口文件。为了更好管理多主题项目,我们推荐将所有类似的主题定义入口文件放在 `src/styles` 路径下。例如,当你的项目有默认和暗黑主题时,你的项目 styles 可能会是以下结构:
      src/styles
      ├── dark.less
      ├── default.less
      └── themes
          ├── base.less
          ├── dark.less
          ├── default.less
          └── mixin.less
    
    `src/styles/` 下的主题文件是主题入口文件,它的作用是引入预定义官方 Less 样式入口文件以及 `src/styles/themes/` 下对应的主题样式定制文件。例如,`src/styles/dark.less` 入口文件含有以下代码: ```less @import '../../node_modules/ng-zorro-antd/ng-zorro-antd'; @import './themes/dark'; ``` 相应的,`src/styles/themes/dark.less` 文件负责定制暗黑主题的样式: ```less @import (multiple) '../../../node_modules/ng-zorro-antd/src/style/themes/dark'; @import './base'; @layout-sider-background: @component-background; @layout-header-background: @component-background; ``` > 当引入对应的预定义主题样式变量文件的时候,会遇到 `.less` 样式文件名跟项目自己的主题样式文件名是一样的情况,这样的话单单使用 `@import '';` 是无法生效的。这种时候, Less 为我们提供了 `@import (multiple) '';` 的 `multiple` 方法来引入这些同名的 `.less` 文件。 注意,如果存在所有主题通用的样式变量,还可以引入一个统一的 `base.less` 基本样式文件并在每个主题样式定制文件中引入它: ```less // base.less 定制通用样式变量 @margin-md: 17px; ``` ### 切换主题 切换主题包括两部分,一是切换项目组件主题,二是切换预定义主题。 #### 切换项目组件主题 Angular 目前默认的模板和 CSS 样式使用的样式封装策略是 `ViewEncapsulation.Emulated`,也就是使用垫片 CSS 来模拟原生行为。根据不同的样式封装策略,Angular 会将项目组件样式以不同方式打包进 JS 文件里。 切换项目组件主题的策略是在定制项目组件样式时,会通过 html 里的代表主题 class 的 `className`,例如 `default` 和 `dark`,以切换打包好的主题。 但是,在每一个项目组件样式文件里根据以下格式写样式会很繁琐: ```less html { &.default { @import 'default'; // 组件样式 ...; } &.dark { @import 'dark'; // 组件样式 ...; } } ``` > 注意,由于已经配置了样式预处理器选项 `stylePreprocessorOptions` 里的路径 `src/styles/themes`,这里的 `@import` 不需要完整的相对路径。 更好的实现方式是,在上文提到的 `mixin.less` 中定义一个 Mixin `.themeMixin(@rules)`: ```less .themeMixin(@rules) { html { &.default { @import './default.less'; @rules(); } &.dark { @import './dark.less'; @rules(); } } } ``` 并在所有的项目组件样式文件里,只需要将所有样式传入 `.themeMixin(@rules)` 里即可: ```less @import 'mixin'; // 同样的,不需要完整的相对路径 .themeMixin({ :host { // 组件样式 ... } }); ``` #### 切换预定义主题 切换预定义主题样式文件则是需要动态创建 `link` 标签,将样式文件动态加载在应用中,并移除上个主题的 `link` 标签。 ```ts private loadCss(href: string, id: string): Promise { return new Promise((resolve, reject) => { const style = document.createElement('link'); style.rel = 'stylesheet'; style.href = href; style.id = id; style.onload = resolve; style.onerror = reject; document.head.append(style); }); } ``` 这里的 `href` 将指代上文配置的[捆绑包](/docs/customize-theme/zh#配置-angular-json-文件)的路径,也就是 `bundleName`的路径。 #### 同步两种主题切换 项目组件样式会被打包进 js 文件,因此在切换 html 的 `className` 的时候主题样式会立即生效。另一方面,动态地加载 CSS 预定义主题文件却是需要时间完成的。如果两个操作同时进行,页面则会出现一部分是立即生效的项目组件样式,另一部分是切换主题加载之前的样式。因此,整个切换主题 `className` 操作需要包裹在 `Promise` 里等待 CSS 文件加载完成后才执行。 ```ts private removeUnusedTheme(theme: ThemeType): void { document.documentElement.classList.remove(theme); const removedThemeStyle = document.getElementById(theme); if (removedThemeStyle) { document.head.removeChild(removedThemeStyle); } } loadTheme(firstLoad = true): Promise { const theme = this.currentTheme; if (firstLoad) { document.documentElement.classList.add(theme); } this.loadCss(`${theme}.css`, theme).then( e => { if (!firstLoad) { document.documentElement.classList.add(theme); } this.removeUnusedTheme(this.previousTheme); resolve(e); }, e => reject(e) ); } ``` 注意:第一次加载首先需要先将用户默认的项目组件主题加入 html 里,而不是包进 Promise 里,否则开始有一段时间会出现没有主题 `className` 的情况。 ## Q&A --- --- order: 11 title: 常见问题 ---

    更多常见问题请搜索标有 FAQ 的 issue

    ### Angular 是不是打出来的包很大? `ng-zorro-antd` 打包大小如何? Angular 的 hello-world 项目(包含路由、动画与 Http 等模块) gzip 之后大概 `30KB`,`ng-zorro-antd` 的官网(包含所有组件,懒加载)打包后 gzip 之后为 `287KB`。这与 React 或者 Vue 增加路由、动画、Http 等模块之后 gzip 的体积不会有太大差异。 如果碰到了打包大小问题,首先请确定使用了 `ng build --prod` 正确的方式进行了打包,如果除 `ng-zorro-antd` 之外还引入了其他第三方组件库,你可以通过 `ng build --prod --sourceMap=true` 命令生成 sourcemap 文件后,再通过 source-map-explorer 检查每个模块所占用的体积,具体操作可以参考[官方文档](https://angular.cn/guide/deployment#inspect-the-bundles)。 ### Angular 是不是过时了,运行会慢吗?`ng-zorro-antd` 性能如何? Angular 与 angular.js 不是同一种前端框架,angular.js 发布的时间在 2010 年 10 月份,而 Angular 诞生时间在 2016 年 9 月份,比 React 和 Vue 的诞生时间都要晚。 总体而言 Angular Vue 与 React 三种框架的运行速度没有太大差异,也不会是你项目运行时快慢的决定因素,具体的性能参数可以参考[该项目](https://github.com/krausest/js-framework-benchmark)。`ng-zorro-antd` 的所有组件均为原生 Angular 组件,并且默认运行在 `OnPush` 模式下,能够保证以 Angular 支持的最优速度运行。 ### 我可以在 Angular 其他版本中使用 ng-zorro-antd 吗? `ng-zorro-antd` 与 `@angular/core` 保持相同的主版本号,例如 `ng-zorro-antd@8` 支持 `@angular/core@8` 版本,依次类推,为了获得最好的性能,推荐升级至最新版本的 Angular。升级 Angular 可以参考[此文档](https://angular.cn/update-guide)。 ### 我可以只使用 ng-zorro-antd 的部分组件吗? `ng-zorro-antd` 的所有组件均支持单独导入使用,与其他的流行组件库可以混用。 ### ng-zorro-antd 为什么使用 less 定制主题? 我能使用 sass 吗? ng-zorro-antd 的设计规范遵从 ant design,因此同样使用了 less 文件来定制主题,`@angular/cli` 支持同一个项目中混用多种 css 预处理器, 与 sass 等文件不会互相干扰。 ### ng-zorro-antd 能和 d3, echarts ...一起使用吗? ng-zorro-antd 本质上是组件库,与用户自己写的 `@Component` 没有任何的区别,也不会与第三方库产生冲突。 ### Can't Bind to since it isn't a known property of 如果使用多 Module 管理方式,NG-ZORRO 的模块需要在每个子 Module 中都要 import,或者在 `ShareModule` 中 export,可以参考[官方文档](https://angular.cn/guide/ngmodules/sharing)。 ### Expression Changed After It Has Been Checked Error 错误 Angular 的数据流是单向数据流,违反数据流走向会引起该问题,[这篇文章](https://blog.angularindepth.com/everything-you-need-to-know-about-the-expressionchangedafterithasbeencheckederror-error-e3fd9ce7dbb4)会帮助你理解原因。 ### Can't bind to 'formGroup' since it isn't a known property of 'form' 使用 Reactive Forms 需要额外引入 `ReactiveFormsModule`,可以参考[官方文档](https://angular.cn/guide/forms/reactive-forms)。 ### 模板中 `[nzValue]="data"` `nzValue="data"` 与 `nzValue="{{data}}"` 有什么区别 `nzValue="data"` 组件收到的是字符串 `data`,`nzValue="{{data}}"` 等价于 `[nzValue]="data.toString()"`。如果你需要传入 `number` 或者 `boolean` 类型时,应当使用 `[nzValue]="data"` 的方式。 ### 数据修改后页面为什么没有更新 为了获得更好的性能,NG-ZORRO 所有组件都运行在 [OnPush](https://angular.cn/guide/components/advanced-configuration#changedetectionstrategy) 模式下,这意味着对 `@Input()` 数据的 mutate 将不会生效,请使用 immutable 方式操作数组或者对象。 ```typescript // 增加数据 this.dataSet = [ ...this.dataSet, { key: `${this.i}`, name: `Edward King ${this.i}`, age: '32', address: `London, Park Lane no. ${this.i}` } ]; // 删除数据 this.dataSet = this.dataSet.filter(d => d.key !== i); ``` 开发者也可以使用 [immer](https://immerjs.github.io/immer/docs/introduction) 获得更好的操作体验 ### 我的页面卡死了,函数不停的在执行 在 Angular 的模板表达式中,绑定带有副作用的属性或者方法都是[危险的](https://angular.cn/guide/template-syntax#avoid-side-effects),如果你违反了这条规则,很可能会造成性能下降甚至引起死循环。以下的代码会在页面中不停输出 `I will run every time`,因为 `console.log` 本身是一种副作用函数。 ```typescript @Component({ template: ` ` }) export class BugComponent { value(): string { console.log('I will run every time'); return 'value'; } } ``` ### 怎样才能进一步提高 Angular 项目性能? 推荐 [https://web.dev/angular](https://web.dev/angular) 的系列文章 ### 为什么我的 ISSUE 会被关闭 ISSUE 列表是为了 开发者 和 用户 追踪相关的开发进度而设计的,这意味 ISSUE 只接受 bug 报告或是新功能请求 (feature requests),这意味着我们不接受用法问题。 另外为了给予 更具体的工作更高的优先级和提高 ISSUE 处理的效率,未按照 格式提交的 ISSUE 也将会被立刻自动关闭。 ### 有些特性为什么不会被支持 `ng-zorro-antd` 是 Angular 版本 Ant Design 的实现,这意味着只有 Ant Design 支持的交互、功能 才会被 `ng-zorro-antd` 实现。 ### 浏览器兼容性问题 首先请确定浏览器版本得到了 Angular 的[官方支持](https://github.com/angular/angular),并正确引入了 [polyfill](https://angular.cn/reference/versions#polyfills) 文件,另外有些组件的部分使用方式不支持部分浏览器(例如 flex显示方式),如果不是以上问题,请提 ISSUE 给我们。 ### 官网能正常工作,相同的用法本地运行有问题,是组件库的 BUG 吗? 不会,NG-ZORRO 的官网使用在 npm 上发布的相同版本构建,所有的构建日志都可以在 [Azure](https://dev.azure.com/ng-zorro/NG-ZORRO) 查看,请仔细检查本地运行环境(版本,其他依赖包)等问题。 ### Angular的相关问题在哪里提问 除了Angular的官方文档和相关的论坛之外,Angular的相关问题可以在 Google 或者 百度 上搜索 `关键字 -angularjs` 来避免 `angularjs` 的干扰,例如 `angular ngmodel -angularjs` 就可以获得 Angular 关于 `ngModel` 的相关文章。 --- --- order: 1 title: 快速上手 --- NG-ZORRO 致力于提供给程序员**愉悦**的开发体验。

    官方指南假设你已了解关于 HTML、CSS 和 JavaScript 的中级知识,并且已经完全掌握了 Angular 及配套设施的正确开发方式。如果你刚开始学习前端或者 Angular ,将框架作为你的第一步可能不是最好的主意 —— 掌握好基础知识再来吧!

    ## 在线演示 最简单的使用方式参照以下 StackBlitz 演示,也推荐 Fork 本例来进行 `Bug Report`,注意不要在实际项目中这样使用。 - [NG-ZORRO StackBlitz](https://stackblitz.com/edit/ng-zorro-antd-ivy) ## 第一个本地实例 实际项目开发中,你会需要对 TypeScript 代码的构建、调试、代理、打包部署等一系列工程化的需求。 我们强烈建议使用官方的 `@angular/cli` 工具链辅助进行开发,下面我们用一个简单的实例来说明。 ### 安装脚手架工具 > 如果你想了解更多CLI工具链的功能和命令,建议访问 [Angular](https://angular.cn/cli) 了解更多。 ```bash $ npm install -g @angular/cli ``` ### 创建一个项目 > 在创建项目之前,请确保 `@angular/cli` 已被成功安装。 执行以下命令,`@angular/cli` 会在当前目录下新建一个名称为 `PROJECT-NAME` 的文件夹,并自动安装好相应依赖。 ```bash $ ng new PROJECT-NAME ``` ### 初始化配置 进入项目文件夹,执行以下命令后将自动完成 `ng-zorro-antd` 的初始化配置,包括引入国际化文件,导入模块,引入样式文件等工作。 ```bash $ ng add ng-zorro-antd ``` CLI 开发者可以通过增加参数来完成个性化的初始化配置,例如国际化或者自定义主题等,详细可以参考 [脚手架](/docs/schematics/zh) 部分。 ### 开发调试 一键启动调试,运行成功后显示欢迎页面。 ```bash $ ng serve --port 0 --open ``` welcome ### 构建和部署 ```bash $ ng build --prod ``` 文件会被打包到 `dist` 目录中。 ## 手动安装 如果想自己维护工作流,理论上你可以利用 Angular 生态圈中的 各种脚手架进行开发,如果遇到问题可参考我们所使用的 [配置](https://github.com/NG-ZORRO/ng-zorro-antd/tree/master/integration) 进行定制。 ### 安装组件 ```bash $ npm install ng-zorro-antd --save ``` ### 引入样式 #### 使用全部组件样式 该配置将包含组件库的全部样式,如果只想使用某些组件请查看 [使用特定组件样式](/docs/getting-started/zh#使用特定组件样式) 配置。 在 `angular.json` 中引入了 ```json { "styles": ["node_modules/ng-zorro-antd/ng-zorro-antd.min.css"] } ``` 在 `style.css` 中引入预构建样式文件 ```css @import '~ng-zorro-antd/ng-zorro-antd.min.css'; ``` 在 `style.less` 中引入 less 样式文件 ```less @import '~ng-zorro-antd/ng-zorro-antd.less'; ``` #### 使用特定组件样式 > 由于组件之间的样式也存在依赖关系,单独引入多个组件的 CSS 可能导致 CSS 的冗余。 使用特定组件样式时前需要先引入基本样式(所有组件的共用样式)。 在 `style.css` 中引入预构建样式文件 ```css @import '~ng-zorro-antd/style/index.min.css'; /* 引入基本样式 */ @import '~ng-zorro-antd/button/style/index.min.css'; /* 引入组件样式 */ ``` 在 `style.less` 中引入 less 样式文件 ```less @import '~ng-zorro-antd/style/entry.less'; /* 引入基本样式 */ @import '~ng-zorro-antd/button/style/entry.less'; /* 引入组件样式 */ ``` ### 引入组件模块 最后你需要将想要使用的组件模块引入到你的组件中。 以下面的 `NzButtonModule` 模块为例: ```ts import { Component } from '@angular/core'; import { NzButtonModule } from 'ng-zorro-antd/button'; @Component({ imports: [NzButtonModule] }) export class AppComponent {} ``` 然后在模板中使用: ```html ``` # 注意事项 - `ng-zorro-antd` 已经包含了 `@angular/cdk/overlay-prebuilt.css` 浮层样式,无需额外导入。 ## 其他 - [国际化配置](/docs/i18n/zh) - [自定义主题](/docs/customize-theme/zh) - [使用图标](/components/icon/zh) --- --- order: 9 title: 文字方向 --- 设置文字方向(LTR / RTL)。 ## 设置默认方向 在文档 `body` 或者 `html` 标签上设置 `dir` 属性。 ```html ``` ## 在模版中设置 引入 Angular CDK bidi 模块 ```typescript import { BidiModule } from '@angular/cdk/bidi'; ``` 在模版中为应用或其后代设置方向。 ```html
    ``` ## 在服务中设置 例如对话框(Modal)服务。 ```typescript class MyComponent { private modalService = inject(NzModalService); private nzConfigService = inject(NzConfigService); openModal(): void { this.modal.create({ nzDirection: 'rtl' }); } setDirWithConfig(): void { this.nzConfigService.set('modal', { nzDirection: 'rtl' }); } } ``` ## 参考 - [Angular CDK Bidirectionality](https://material.angular.io/cdk/bidi/api) - [dir - HTML | MDN](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/dir) --- --- order: 2 title: 脚手架 --- 使用脚手架可以更加方便的初始化项目,生成模板代码,节省开发时间。 > 脚手架部分完全基于 [Schematics](https://blog.angular.dev/schematics-an-introduction-dc1dfbc2a2b2) 部分进行开发。 ## 项目初始化 在项目下运行命令 `ng add ng-zorro-antd` 跟随选项便可完成初始化配置,包括引入国际化文件,导入模块,引入样式文件等工作。 NG-ZORRO CLI 同时你可以通过选择预设的模板创建一个 Angular 项目,并在此基础上进行开发。 ## 生成组件 快速生成模板代码,每个官网的代码演示都附有可生成的模板,开发者可以通过展开每个组件的代码演示部分获取其生成代码。 ### 命令 ```bash ng g ng-zorro-antd:[schematic] [options] ``` 例如通过以下代码可以快速生成一个登录框组件 ```bash ng g ng-zorro-antd:form-normal-login login ``` --- --- order: 12 title: 贡献指南 --- 这篇指南会指导你如何为 NG-ZORRO 贡献一份自己的力量,请在你要提 issue 或者 pull request 之前花几分钟来阅读一遍这篇指南。 ## 行为准则 我们有一份 [行为准则](https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/CODE_OF_CONDUCT.md),希望所有的贡献者都能遵守,请花时间阅读一遍全文以确保你能明白哪些是可以做的,哪些是不可以做的。 ## 透明的开发 我们所有的工作都会放在 [GitHub](https://github.com/NG-ZORRO/ng-zorro-antd) 上。不管是核心团队的成员还是外部贡献者的 pull request 都需要经过同样流程的 review。 ## Bugs 我们使用 [GitHub Issues](https://github.com/NG-ZORRO/ng-zorro-antd/issues) 来做 bug 追踪。 如果你想要你发现的 bug 被快速解决,最好的办法就是通过我们提供的 [issue 小助手](https://ng.ant.design/issue-helper/#/zh) 来提 issue。 并且能使用这个 [模板](https://stackblitz.com/edit/ng-zorro-antd-ivy) 来提供重现。 在你报告一个 bug 之前,请先确保已经搜索过已有的 issue 和阅读了我们的 [常见问题](docs/faq/zh)。 ## 新增功能 如果你有改进我们的 API 或者新增功能的想法,我们同样推荐你使用我们提供的 [issue 小助手](https://ng.ant.design/issue-helper/#/zh) 来新建一个添加新功能的 issue。 ## 第一次贡献 如果你还不清楚怎么在 GitHub 上提 Pull Request ,可以阅读下面这些文章来学习: - [如何为开源做贡献](https://opensource.guide/zh-cn/how-to-contribute/) - [第一次参与开源](https://github.com/firstcontributions/first-contributions/blob/master/translations/README.chs.md) 为了能帮助你开始你的第一次尝试,我们用 [Good First Issue](https://github.com/NG-ZORRO/ng-zorro-antd/labels/good%20first%20issue) 标记了一些比较比较容易修复的 bug 和小功能。这些 issue 可以很好地做为你的首次尝试。 如果你打算开始处理一个 issue,请先检查一下 issue 下面的留言以确保没有别人正在处理这个 issue。如果当前没有人在处理的话你可以留言告知其他人你将会处理这个 issue,以免别人重复劳动。 如果之前有人留言说会处理这个 issue 但是一两个星期都没有动静,那么你也可以接手处理这个 issue,当然还是需要留言告知其他人。 ## 贡献代码 NG ZORRO 团队会关注所有的 Pull Request,我们会 review 以及合并你的代码,也有可能要求你做一些修改或者告诉你我们为什么不能接受这样的修改。 **在你发送 Pull Request 之前**,请确认你是按照下面的步骤来做的: 1. 在项目根目录下运行了 `npm install`。 2. 如果你修复了一个 bug 或者新增了一个功能,请确保写了相应的测试,这很重要。 3. 确认所有的测试都是通过的 `npm run test`。 4. 确保你的代码通过了 lint 检查 `npm run lint`。 5. 确保你的代码在提交之前经过了正确的 [Rebase](https://www.digitalocean.com/community/tutorials/how-to-rebase-and-update-a-pull-request)。 6. 确保你的提交信息符合[我们的 commit 规范](https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/CONTRIBUTING.md#-commit-message-guidelines)。 ## 如何提出 Pull Request 1. fork `ng-zorro-antd` 仓库,以下所有操作均在 fork 之后的仓库上执行 2. 在 `master` 分支运行:`git remote add upstream https://github.com/NG-ZORRO/ng-zorro-antd.git` 3. 在 `master` 分支运行: `git pull upstream master` 4. 在 `master` 分支运行: `git push origin master` 5. 切换到你要工作的 feature 分支 (例如有一个分支叫 `docs-fix`): `git checkout docs-fix` 6. 在 `docs-fix` 分支运行: `git rebase origin/master` 7. 在 `docs-fix` 分支修改代码,并 commit: `git commit -a`,按照我们 [commit 规范](https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/CONTRIBUTING.md#-commit-message-guidelines)进行填写。 8. 推送代码 `git push` (可能需要 `-f`) 9. 在 Github 上发起 Pull Request 请求 ## 开发流程 在你 clone 了 `ng-zorro-antd` 的代码并且使用 `npm install` 安装完依赖后,你还可以运行下面几个常用的命令: - `npm start` 在本地运行 `NG-ZORRO` 的网站。 - `npm run lint` 检查代码风格。 - `npm test` 运行测试。 - `npm run test:watch [name]` 运行某文件测试,并监视变化。 - `npm run build:lib` 构建 `ng-zorro-antd` 到 `publish` 目录。 如果在开发过程中遇到问题,可查看 GitHub 上的[开发指南](https://github.com/NG-ZORRO/ng-zorro-antd/wiki/%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97)。 --- # Components --- category: Components subtitle: Cron 表单 type: 数据录入 title: Cron Expression cols: 1 experimental: true description: 显示和编辑 cron 表达式。 --- ## 何时使用 需要在表单中使用 cron 格式验证时使用。 ## API 别忘记先安装 cron-parser: ```sh npm install cron-parser ``` ### nz-cron-expression | 参数 | 说明 | 类型 | 默认值 | | --------------------- | ---------------------- | ----------------------------- | --------- | | `[nzType]` | cron 规则类型 | `'linux'|'spring'` | `linux` | | `[nzSize]` | 设置输入框大小 | `'large'|'small'|'default'` | `default` | | `[nzDisabled]` | 禁用 | `boolean` | `false` | | `[nzBorderless]` | 是否隐藏边框 | `boolean` | `false` | | `[nzCollapseDisable]` | 隐藏折叠面板 | `boolean` | `false` | | `[nzExtra]` | 自定义渲染右侧的内容 | `TemplateRef` | - | | `[nzSemantic]` | 自定义渲染下次执行时间 | `TemplateRef` | - | ## 注意 ### 支持格式 ```text * * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ | │ │ │ │ │ └ day of week (0 - 7, 1L - 7L) (0 or 7 is Sun) │ │ │ │ └───── month (1 - 12) │ │ │ └────────── day of month (1 - 31, L) │ │ └─────────────── hour (0 - 23) │ └──────────────────── minute (0 - 59) └───────────────────────── second (0 - 59, optional) ``` --- --- category: Components type: 通用 title: Pipes cols: 1 experimental: true description: 常用 Pipes 集合。 --- ## 何时使用 引入 Pipe 后,像 angular 的默认 Pipe 一样使用 ## API ### nzBytes | 参数 | 说明 | 类型 | 默认值 | | --------- | ------------------ | -------- | ------ | | `decimal` | 保留小数位 | `number` | '0' | | `from` | 当前值的单位 | `string` | 'B' | | `to` | 转换到目标值的单位 | `string` | '' | ### nzToCssUnit | 参数 | 说明 | 类型 | 默认值 | | ------------- | -------- | -------- | ------ | | `defaultUnit` | 默认单位 | `string` | 'px' | ### nzEllipsis | 参数 | 说明 | 类型 | 默认值 | | -------- | -------- | -------- | ------ | | `length` | 截取长度 | `number` | '' | | `suffix` | 替换字符 | `string` | '' | ### nzAggregate | 参数 | 说明 | 类型 | 默认值 | | -------- | -------- | ---------------------------------- | ------ | | `method` | 聚合方式 | `'sum' \| 'max' \| 'min' \| 'avg'` | '' | ### nzSanitizer | 参数 | 说明 | 类型 | 默认值 | | ------ | -------------- | -------- | ------ | | `type` | sanitizer 类型 | `string` | 'html' | --- --- category: Components subtitle: 上传 type: 数据录入 title: Upload cover: 'https://gw.alipayobjects.com/zos/alicdn/QaeBt_ZMg/Upload.svg' description: 文件选择上传和拖拽上传控件。 --- ## 何时使用 上传是将信息(网页、文字、图片、视频等)通过网页或者上传工具发布到远程服务器上的过程。 - 当需要上传一个或一些文件时。 - 当需要展现上传的进度时。 - 当需要使用拖拽交互时。 ## API > 服务端上传接口实现可以参考 [jQuery-File-Upload](https://github.com/blueimp/jQuery-File-Upload/wiki)。 ### nz-upload | 参数 | 说明 | 类型 | 默认值 | | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------ | | `[nzAccept]` | 接受上传的文件类型, 详见 [input accept Attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept) | `string` | - | | `[nzAction]` | 必选参数, 上传的地址 | `string \| ((file: NzUploadFile) => string \| Observable)` | - | | `[nzDirectory]` | 支持上传文件夹([caniuse](https://caniuse.com/#feat=input-file-directory)) | `boolean` | `false` | | `[nzBeforeUpload]` | 上传文件之前的钩子,参数为上传的文件,若返回 `false` 则停止上传。注意:**IE9** 不支持该方法;注意:务必使用 `=>` 定义处理方法。 | `(file: NzUploadFile, fileList: NzUploadFile[]) => boolean \| Observable` | - | | `[nzCustomRequest]` | 通过覆盖默认的上传行为,可以自定义自己的上传实现;注意:务必使用 `=>` 定义处理方法。 | `(item) => Subscription` | - | | `[nzData]` | 上传所需参数或返回上传参数的方法;注意:务必使用 `=>` 定义处理方法。 | `Object \| ((file: NzUploadFile) => Object \| Observable<{}>)` | - | | `[nzDisabled]` | 是否禁用 | `boolean` | `false` | | `[nzFileList]` | 文件列表,双向绑定 | `NzUploadFile[]` | - | | `[nzLimit]` | 限制单次最多上传数量,`nzMultiple` 打开时有效;`0` 表示不限 | `number` | `0` | | `[nzMaxCount]` | 限制上传数量。当为 1 时,始终用最新上传的文件代替当前文件 | `number\|undefined` | `undefined` | | `[nzSize]` | 限制文件大小,单位:KB;`0` 表示不限 | `number` | `0` | | `[nzFileType]` | 限制文件类型,例如:`image/png,image/jpeg,image/gif,image/bmp` | `string` | - | | `[nzFilter]` | 自定义过滤器 | `UploadFilter[]` | - | | `[nzHeaders]` | 设置上传的请求头部,IE10 以上有效;注意:务必使用 `=>` 定义处理方法。 | `Object \| ((file: NzUploadFile) => Object \| Observable<{}>)` | - | | `[nzListType]` | 上传列表的内建样式,支持三种基本样式 `text`, `picture` 和 `picture-card` | `'text' \| 'picture' \| 'picture-card'` | `'text'` | | `[nzMultiple]` | 是否支持多选文件,`ie10+` 支持。开启后按住 ctrl 可选择多个文件。 | `boolean` | `false` | | `[nzName]` | 发到后台的文件参数名 | `string` | `'file'` | | `[nzShowUploadList]` | 是否展示 uploadList, 可设为一个对象,用于单独设定 `showPreviewIcon`,`showRemoveIcon` 和 `showDownloadIcon` | `boolean \| { showPreviewIcon?: boolean, showRemoveIcon?: boolean, showDownloadIcon?: boolean }` | `true` | | `[nzShowButton]` | 是否展示上传按钮 | `boolean` | `true` | | `[nzWithCredentials]` | 上传请求时是否携带 cookie | `boolean` | `false` | | `[nzOpenFileDialogOnClick]` | 点击打开文件对话框 | `boolean` | `true` | | `[nzPreview]` | 点击文件链接或预览图标时的回调;注意:务必使用 `=>` 定义处理方法。 | `(file: NzUploadFile) => void` | - | | `[nzPreviewFile]` | 自定义文件预览逻辑;注意:务必使用 `=>` 定义处理方法。 | `(file: NzUploadFile) => Observable` | - | | `[nzPreviewIsImage]` | 自定义预览文件是否有效图像,一般用于图像 URL 为非标准格式;注意:务必使用 `=>` 定义处理方法。 | `(file: NzUploadFile) => boolean` | - | | `[nzRemove]` | 点击移除文件时的回调,返回值为 false 时不移除。支持返回 `Observable` 对象;注意:务必使用 `=>` 定义处理方法。 | `(file: NzUploadFile) => boolean \| Observable` | - | | `(nzChange)` | 上传文件改变时的状态 | `EventEmitter` | - | | `[nzDownload]` | 点击下载文件时的回调,如果没有指定,则默认跳转到文件 url 对应的标签页 | `(file: NzUploadFile) => void` | 跳转新标签页 | | ~~`[nzTransformFile]`~~ | ~~在上传之前转换文件。支持返回一个 Observable 对象~~ | ~~`(file: NzUploadFile) => NzUploadTransformFileType`~~ | - | | `[nzIconRender]` | 自定义显示 icon | `TemplateRef<{ $implicit: NzUploadFile }>` | - | | `[nzFileListRender]` | 自定义显示整个列表 | `TemplateRef<{ $implicit: NzUploadFile[] }>` | - | #### nzChange > 开始、上传进度、完成、失败都会调用这个函数。 文件状态改变的回调,返回为: ```js { file: { /* ... */ }, fileList: [ /* ... */ ], event: { /* ... */ }, } ``` 1. `file` 当前操作的文件对象。 ```js { uid: 'uid', // 文件唯一标识 name: 'xx.png' // 文件名 status: 'done', // 状态有:uploading done error removed response: '{"status": "success"}', // 服务端响应内容 linkProps: '{"download": "image"}', // 下载链接额外的 HTML 属性 } ``` 2. `fileList` 当前的文件列表。 3. `event` 上传中的服务端响应内容,包含了上传进度等信息,高级浏览器支持。 #### nzCustomRequest 默认使用 HTML5 方式上传(即:使用 `HttpClient`),允许覆盖默认行为实现定制需求,例如直接与阿里云交互等。 `nzCustomRequest` 回调传递以下参数: - `onProgress: (event: { percent: number }): void` - `onError: (event: Error): void` - `onSuccess: (body: Object, xhr?: Object): void` - `data: Object` - `filename: String` - `file: File` - `withCredentials: Boolean` - `action: String` - `headers: Object` --- --- category: Components subtitle: 下拉菜单 type: 导航 title: Dropdown cover: 'https://gw.alipayobjects.com/zos/alicdn/eedWN59yJ/Dropdown.svg' description: 向下弹出的列表。 --- ## 何时使用 当页面上的操作命令过多时,用此组件可以收纳操作元素。点击或移入触点,会出现一个下拉菜单。可在列表中进行选择,并执行相应的命令。 ## API ### [nz-dropdown] | 参数 | 说明 | 类型 | 默认值 | 版本 | | ---------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------- | -------------- | ------ | | `[nzDropdownMenu]` | Dropdown 下拉菜单组件 | `NzDropdownMenuComponent` | - | | `[nzDisabled]` | 菜单是否禁用 | `boolean` | - | | `[nzPlacement]` | 菜单弹出位置 | `'bottomLeft' \| 'bottomCenter' \| 'bottomRight' \| 'topLeft' \| 'topCenter' \| 'topRight'` | `'bottomLeft'` | | `[nzTrigger]` | 触发下拉的行为 | `'click' \| 'hover'` | `'hover'` | | `[nzClickHide]` | 点击后是否隐藏菜单 | `boolean` | `true` | | `[nzVisible]` | 菜单是否显示,可双向绑定 | `boolean` | - | | `[nzOverlayClassName]` | 下拉根元素的类名称 | `string` | - | | `[nzOverlayStyle]` | 下拉根元素的样式 | `object` | - | | `(nzVisibleChange)` | 菜单显示状态改变时调用,参数为 nzVisible | `EventEmitter` | - | | `[nzArrow]` | 下拉框箭头是否显示 | `boolean` | `false` | 20.2.0 | 菜单使用 [nz-menu](/components/menu/zh),还包括菜单项 `[nz-menu-item]`,分割线 `[nz-menu-divider]`。 > 注意:`nz-dropdown` 下的 `[nz-menu]` 默认不可选中。如果需要菜单可选中,可以指定 `
      `. > > `nz-dropdown-menu` 内 `[nz-menu]` 的 `nzMode` 只可以是默认值 `vertical`。 ### nz-dropdown-menu 用于包裹菜单项,可以通过 `nzDropdownMenu` 模板变量导出后传入 `[nz-dropdown]` 和 `NzContextMenuService`。 > 注意:每个 `nz-dropdown-menu` 只能作为一个 `[nz-dropdown]` 的输入项 ```html Hover me
      • 1st menu item
      • 2nd menu item
      • 3rd menu item
      ``` ### NzContextMenuService 用于右键弹出下拉菜单,具体参见示例 | 方法/属性 | 说明 | 参数 | 返回 | | --------- | ------------ | --------------------------------------------------------------------------- | ---------------------- | | create | 创建右键菜单 | `($event:MouseEvent \| {x:number, y:number}, menu:NzDropdownMenuComponent)` | `EmbeddedViewRef` | | close | 关闭右键菜单 | - | - | ## FAQ ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components subtitle: 二维码 type: 数据展示 title: QRCode tag: 15.1.0 cover: 'https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*cJopQrf0ncwAAAAAAAAAAAAADrJ8AQ/original' description: 能够将文本转换生成二维码的组件,支持自定义配色和 Logo 配置。 --- ## 何时使用 当需要将文本转换成为二维码时使用。 ## API ### nz-qrcode | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------------------ | ------------------------------------------------------------------ | ------------------------------------------- | ----------- | ----------------- | | `[nzValue]` | 扫描后的文本 | `string \| string[]` | - | `string[]`:21.0.0 | | `[nzType]` | 渲染类型 | `'canvas'\|'svg'` | `canvas` | 21.0.0 | | `[nzColor]` | 二维码颜色 | `string` | `'#000000'` | | `[nzBgColor]` | 二维码背景颜色 | `string` | `'#FFFFFF'` | | `[nzSize]` | 二维码大小 | `number` | `160` | | `[nzPadding]` | 二维码填充 | `number` | `0` | | `[nzIcon]` | 二维码中 icon 地址 | `string` | - | | `[nzIconSize]` | 二维码中 icon 大小 | `number` | `40` | | `[nzBordered]` | 是否有边框 | `boolean` | `true` | | `[nzStatus]` | 二维码状态 | `'active'\|'expired'\|'loading'\|'scanned'` | `'active'` | | `[nzStatusRender]` | 自定义状态渲染器 | `TemplateRef \| string` | - | | `[nzLevel]` | 二维码容错等级 | `'L'\|'M'\|'Q'\|'H'` | `'M'` | | `[nzBoostLevel]` | 如果启用,自动提升纠错等级,结果的纠错级别可能会高于指定的纠错级别 | `boolean` | `true` | 21.0.0 | | `(nzRefresh)` | 点击"点击刷新"的回调 | `EventEmitter` | - | ## 注意 ### 二维码无法识别 `nzValue` 保守的上限为 738 或更少的字符串。如果使用容错等级,`nzValue` 上限会降低。 ### 关于二维码容错等级 容错等级也叫容错率,就是指二维码可以被遮挡后还能正常扫描,而这个能被遮挡的最大面积就是容错率。 通常情况下二维码分为 4 个容错等级:`L级` 可纠正约 `7%` 错误、`M级` 可纠正约 `15%` 错误、`Q级` 可纠正约 `25%` 错误、`H级` 可纠正约 `30%` 错误。并不是所有位置都可以缺损,像最明显的三个角上的方框,直接影响初始定位。中间零散的部分是内容编码,可以容忍缺损。当二维码的内容编码携带信息比较少的时候,也就是链接比较短的时候,设置不同的容错等级,生成的图片不会发生变化。 > 有关更多信息,可参阅相关资料:[https://www.qrcode.com/zh/about/error_correction](https://www.qrcode.com/zh/about/error_correction.html) --- --- category: Components subtitle: 代码编辑器 type: 数据录入 title: Code Editor cols: 1 experimental: true description: 基于 monaco-editor 的代码编辑器。 --- ## 何时使用 需要在网页上渲染 monaco editor 时使用。 ### 引入样式 ```less @import 'node_modules/ng-zorro-antd/code-editor/style/entry.less'; ``` ## API 别忘记先安装 monaco editor: ```sh npm install monaco-editor ``` ### 动态加载 如果你使用动态加载,你就需要在运行时加载 monaco editor 本身的资源。 在 `angular.json` 中添加: ```diff "assets": [ + { + "glob": "**/*", + "input": "./node_modules/monaco-editor/min/vs", + "output": "/assets/vs/" + } ], ``` 这样就 OK 了!CodeEditor 组件在需要加载 monaco editor 时自动去 `/assets/vs/` 目录下查询。 如果你的静态资源都部署在 CDN 上,你就无须修改 `angular.json` 文件,但你必须通过 `NzConfigService` 配置 `assetsRoot` 属性。例如你将 monaco editor 的资源放置在了 https://mycdn.com/assets/vs ,你就需要传递 `{ assetsRoot: 'https://mycdn.com/assets' }` 。 > 如果你使用静态加载,你就无需修改 `angular.json` 文件,详见下文。 ### 静态加载 有时候你可能需要在运行时加载 AMD module,但 monaco editor 的加载文件 loader.js patch 了 `window[require]` 属性,导致你无法使用 requireJS 等模块加载库,这时,你可以启用静态加载功能。 方法是使用 Microsoft 提供的 [monaco-editor-webpack-plugin](https://github.com/microsoft/monaco-editor-webpack-plugin) 插件。 1. 在 `app.config.ts` 中提供 `NZ_CONFIG` 的值,并设置 `codeEditor` 属性下的 `useStaticLoading` 为 `true` 。 2. 创建一个 webpack.partial.js 文件,根据插件文档进行相应的配置。 3. 使用自定义脚本加载器,例如 [ngx-build-plus](https://github.com/manfredsteyer/ngx-build-plus),在打包时加载这个 webpack 配置。 使用静态加载时,你无需在 `angular.json` 文件中注册 monaco editor 的资源。 ### nz-code-editor | 参数 | 说明 | 类型 | 默认值 | | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | -------- | | `[nzEditorMode]` | 编辑器的模式 | `normal`\|`diff` | `normal` | | `[nzLoading]` | 加载中 | `boolean` | `false` | | `[nzOriginalText]` | Diff 模式下,左半边的文本内容 | `boolean` | `false` | | `[nzFullControl]` | 完全控制模式,此模式下组件不会帮助用户处理 `TextModel`,用户应当自行管理 monaco editor 实例 | `boolean` | `false` | | `[nzEditorOption]` | 编辑器选项,[参考 monaco editor 的定义](https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.IEditorOptions.html) | `IEditorConstructionOptions` | `{}` | | `[nzToolkit]` | 暴露快捷操作 | `TemplateRef` | - | | `(nzEditorInitialized)` | 当编辑器组件初始化完毕之后派发事件 | `IStandaloneCodeEditor` \| `IStandaloneDiffEditor` | - | #### 方法 | 名称 | 描述 | | ---------- | ---------------- | | `layout()` | 强制组件重新渲染 | ### 全局配置 你可以通过 `NzConfigService` 的 `set` 方法,设置 `CodeEditor` 组件的默认配置。 #### CodeEditorConfig | 属性 | 说明 | 类型 | 默认值 | | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------- | | `assetsRoot` | 组件加载 monaco editor 资源文件的位置 | `string` \| `SafeUrl` | - | | `defaultEditorOption` | 默认的编辑器设置,[参考 monaco editor 的定义](https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor.IEditorConstructionOptions.html) | `IEditorConstructionOptions` | `{}` | | `onLoad` | 当 monaco editor 资源加载完毕时触发的钩子,此时全局对象 `monaco` 可用 (monaco-editor 版本不小于 0.22.0 时需定义 `window.MonacoEnvironment = { globalAPI: true }`) | `() => void` | - | | `onFirstEditorInit` | 当第一个编辑器请求初始化时触发的钩子 | `() => void` | - | | `onInit` | 每个编辑器请求初始化时触发的钩子 | `() => void` | - | | `useStaticLoading` | 使用静态加载 | `boolean` | `false` | --- --- category: Components type: 特色组件 title: CheckList subtitle: 任务清单 cols: 1 tag: 19.1.0 cover: 'https://img.alicdn.com/imgextra/i2/O1CN01E9BUpE1TCyZry8ETC_!!6000000002347-2-tps-386-453.png' description: 用于在项目中梳理任务流程。 --- ## 何时使用 如果当前页面业务逻辑过于复杂,且带有较为强制的顺序流控制,那么你可以采用这个组件来帮你简化流程。 ## API ### nz-check-list | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | ------------------- | ---------------------- | ----------------------------- | ------- | -------- | | `[nzItems]` | 任务清单元素 | `NzItemProps` | `[]` | - | | `[nzVisible]` | 显示任务清单 | `boolean` | `false` | - | | `[nzIndex]` | 当前所属位置 | `number` | `1` | - | | `[nzProgress]` | 显示任务进度 | `boolean` | `true` | - | | `[nzTriggerRender]` | 清单悬浮按钮的渲染模板 | `TemplateRef \| string` | - | - | | `[nzTitle]` | 清单面板标题的渲染模板 | `TemplateRef \| string` | - | - | | `[nzFooter]` | 清单面板底部的渲染模板 | `TemplateRef \| string` | - | - | | `(nzHide)` | 隐藏清单的回调 | `EventEmitter` | `false` | - | > `(nzHide)` 的回调值为是否不再显示清单。你可以在回调中存储数据到 `LocalStorage` 中,以避免再次显示清单。 ### Interfaces #### NzItemProps | 参数 | 说明 | 类型 | 默认值 | | ------------- | ------------------ | ----------------------------- | ------ | | `key` | 清单元素的唯一 key | `string` | - | | `description` | 清单元素描述内容 | `string` | - | | `checked` | 当前清单是否完成 | `boolean` | - | | `onClick` | 点击步骤触发的方法 | `(item: NzItemProps) => void` | - | > `key` 为清单元素的唯一标识,如果不填写,则默认使用 `description` 作为 key。 --- --- category: Components subtitle: 全局提示 type: 反馈 title: Message cover: 'https://gw.alipayobjects.com/zos/alicdn/hAkKTIW0K/Message.svg' description: 全局展示操作反馈信息。 --- ## 何时使用 - 可提供成功、警告和错误等反馈信息。 - 顶部居中显示并自动消失,是一种不打断用户操作的轻量级提示方式。 ## API ### NzMessageService 组件提供了一些服务方法,使用方式和参数如下: - `NzMessageService.success(content, [options])` - `NzMessageService.error(content, [options])` - `NzMessageService.info(content, [options])` - `NzMessageService.warning(content, [options])` - `NzMessageService.loading(content, [options])` | 参数 | 说明 | 类型 | 默认值 | | ------- | ---------------------------------------- | ----------------------------- | ------ | | content | 提示内容 | `string \| TemplateRef` | - | | options | 支持设置针对当前提示框的参数,见下方表格 | `object` | - | `options` 支持设置的参数如下: | 参数 | 说明 | 类型 | 版本 | | -------------- | --------------------------------- | ---------------------------- | ------ | | nzDuration | 持续时间(毫秒),当设置为0时不消失 | `number` | | | nzPauseOnHover | 鼠标移上时禁止自动移除 | `boolean` | | | nzAnimate | 开关动画效果 | `boolean` | | | nzData | 传递给自定义模板的数据 | `NzSafeAny` | | | nzStyle | 自定义内联样式 | `NgStyleInterface \| string` | 20.4.0 | | nzClass | 自定义 CSS class | `NgClassInterface \| string` | 20.4.0 | 还提供了全局销毁方法: - `NzMessageService.remove(id)`: 移除特定id的消息,当id为空时,移除所有消息(该消息id通过上述方法返回值中得到) ### 全局配置 可以通过 `NzConfigService` 进行全局配置,详情请见文档中 [全局配置项](/docs/global-config/zh) 章节。 | 参数 | 说明 | 类型 | 默认值 | | -------------- | ----------------------------------- | ------------------ | ------ | | nzDuration | 持续时间(毫秒),当设置为 0 时不消失 | `number` | `3000` | | nzMaxStack | 同一时间可展示的最大提示数量 | `number` | `7` | | nzPauseOnHover | 鼠标移上时禁止自动移除 | `boolean` | `true` | | nzAnimate | 开关动画效果 | `boolean` | `true` | | nzTop | 消息距离顶部的位置 | `number \| string` | `24` | | nzDirection | 消息文字方向 | `'ltr' \| 'rtl'` | - | ### NzMessageRef 当你调用 `NzMessageService.success` 或其他方法时会返回该对象。 ```ts export interface NzMessageRef { messageId: string; onClose: Subject; // 当 message 关闭时它会派发一个事件 } ``` --- --- category: Components type: 布局 title: Divider subtitle: 分割线 cover: 'https://gw.alipayobjects.com/zos/alicdn/5swjECahe/Divider.svg' description: 区隔内容的分割线。 --- ## 何时使用 - 对不同章节的文本段落进行分割。 - 对行内文字/链接进行分割,例如表格的操作列。 ## API ### nz-divider | 参数 | 说明 | 类型 | 默认值 | 版本 | | ----------------- | -------------------------- | --------------------------------- | -------------- | ------ | | `[nzDashed]` | 是否虚线 | `boolean` | `false` | | `[nzType]` | 水平还是垂直类型 | `'horizontal' \| 'vertical'` | `'horizontal'` | | `[nzText]` | 中间文字 | `string \| TemplateRef` | - | | `[nzPlain]` | 文字是否显示为普通正文样式 | `boolean` | `false` | | `[nzOrientation]` | 中间文字方向 | `'center' \| 'left' \| 'right'` | `'center'` | | `[nzVariant]` | 分割线是虚线、点线还是实线 | `'dashed' \| 'dotted' \| 'solid'` | `'solid'` | | `[nzSize]` | 分割线大小 | `'small' \| 'middle' \| 'large'` | - | 20.2.0 | --- --- category: Components subtitle: 分段控制器 type: 数据展示 title: Segmented cover: 'https://gw.alipayobjects.com/zos/bmw-prod/a3ff040f-24ba-43e0-92e9-c845df1612ad.svg' description: 用于展示多个选项并允许用户选择其中单个选项。 --- ## 何时使用 - 用于展示多个选项并允许用户选择其中单个选项; - 当切换选中选项时,关联区域的内容会发生变化。 ## API ### nz-segmented | 参数 | 说明 | 类型 | 默认值 | 全局配置 | 版本 | | ----------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------- | --------- | -------- | ------ | | `[nzBlock]` | 将宽度调整为父元素宽度的选项 | `boolean` | `false` | | | `[nzDisabled]` | 是否禁用 | `boolean` | `false` | | | `[nzOptions]` | 数据化配置选项内容 | `string[] \| number[] \| Array<{ label: string; value: string \| number; icon: string; disabled?: boolean; }>` | - | | | `[nzSize]` | 控件尺寸 | `large \| default \| small` | - | ✅ | | `[nzShape]` | 形状 | `default \| round` | `default` | - | 20.3.0 | | `[nzVertical]` | 排列方向 | `boolean` | `false` | - | 20.2.0 | | `[nzName]` | 所有 `input[type="radio"]` 的 `name` 属性 | `string` | - | | 20.3.0 | | `[ngModel]` | 当前选中项目的 value | `string \| number` | - | | | `(nzValueChange)` | 当前选中项目变化时触发回调 | `EventEmitter` | - | | | `(ngModelChange)` | 当前选中项目变化时触发回调 | `EventEmitter` | - | | ### label[nz-segmented-item] | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | -------------- | -------- | ------------------ | ------- | -------- | | `[nzIcon]` | 图标 | `string` | - | | | `[nzValue]` | 值 | `string \| number` | - | | | `[nzDisabled]` | 是否禁用 | `boolean` | `false` | | --- --- category: Components type: 布局 title: Splitter subtitle: 分隔面板 tag: 19.2.0 cover: 'https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*f0SISaETY0wAAAAAAAAAAAAADrJ8AQ/original' description: 自由切分指定区域。 --- ## 何时使用 - 可以水平或垂直地分隔区域。 - 当需要自由拖拽调整各区域大小。 - 当需要指定区域的最大最小宽高时。 ## API ### nz-splitter | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ---------------- | ---------------------------- | -------------- | | `[nzLayout]` | 布局方向 | `'horizontal' \| 'vertical'` | `'horizontal'` | | `[nzLazy]` | 延迟渲染模式 | `boolean` | `false` | | `(nzResizeStart)` | 开始拖拽之前回调 | `EventEmitter` | - | | `(nzResize)` | 面板大小变化回调 | `EventEmitter` | - | | `(nzResizeEnd)` | 拖拽结束回调 | `EventEmitter` | - | ### nz-splitter-panel | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ------------------------------------------------- | ------------------------------------------------ | ------- | | `[nzDefaultSize]` | 初始面板大小,支持数字 px 或者文字 '百分比%' 类型 | `number \| string` | - | | `[nzMin]` | 最小阈值,支持数字 px 或者文字 '百分比%' 类型 | `number \| string` | - | | `[nzMax]` | 最大阈值,支持数字 px 或者文字 '百分比%' 类型 | `number \| string` | - | | `[nzSize]` | 受控面板大小,支持数字 px 或者文字 '百分比%' 类型 | `number \| string` | - | | `[nzCollapsible]` | 快速折叠 | `boolean \| { start?: boolean; end?: boolean }` | `false` | | `[nzResizable]` | 是否开启拖拽伸缩 | `boolean` | `true` | --- --- category: Components subtitle: 分页 type: 导航 title: Pagination cols: 1 cover: 'https://gw.alipayobjects.com/zos/alicdn/1vqv2bj68/Pagination.svg' description: 分页器用于分隔长列表,每次只加载一个页面。 --- ## 何时使用 - 当加载/渲染所有数据将花费很多时间时; - 可切换页码浏览数据。 ## API ```html ``` ### nz-pagination | 参数 | 说明 | 类型 | 默认值 | 全局配置 | 版本 | | ---------------------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------ | -------- | ------ | | `[nzTotal]` | 数据总数 | `number` | - | - | | `[nzPageIndex]` | 当前页数,可双向绑定 | `number` | `1` | - | | `[nzPageSize]` | 每页条数,可双向绑定 | `number` | `10` | - | | `[nzDisabled]` | 是否禁用 | `boolean` | `false` | - | | `[nzShowQuickJumper]` | 是否可以快速跳转至某页 | `boolean` | `false` | ✅ | | `[nzShowSizeChanger]` | 是否可以改变 `nzPageSize` | `boolean` | `false` | ✅ | | `[nzSimple]` | 当添加该属性时,显示为简单分页 | `boolean` | - | ✅ | | `[nzSize]` | 当为`'small'` 时,是小尺寸分页 | `'small' \| 'default'` | `'default'` | ✅ | | `[nzResponsive]` | 当 `nzSize` 未指定时,根据屏幕宽度自动调整尺寸 | `boolean` | `false` | - | | `[nzPageSizeOptions]` | 指定每页可以显示多少条 | `number[]` | `[10, 20, 30, 40]` | ✅ | | `[nzItemRender]` | 用于自定义页码的结构 | `TemplateRef<{ $implicit: 'page' \| 'prev' \| 'next'\| 'prev_5'\| 'next_5', page: number }>` | - | - | | `[nzShowTotal]` | 用于显示数据总量和当前数据范围,具体使用方式见代码演示部分 | `TemplateRef<{ $implicit: number, range: [ number, number ] }>` | - | - | | `[nzHideOnSinglePage]` | 只有一页时是否隐藏分页器 | `boolean` | `false` | - | | `[nzAlign]` | 对齐方式 | `NzPaginationAlign` | `start` | - | 20.4.0 | | `(nzPageIndexChange)` | 页码改变的回调 | `EventEmitter` | - | - | | `(nzPageSizeChange)` | 每页条数改变的回调 | `EventEmitter` | - | - | --- --- category: Components subtitle: 列表 type: 数据展示 title: List cols: 1 cover: 'https://gw.alipayobjects.com/zos/alicdn/5FrZKStG_/List.svg' description: 最基础的列表展示,可承载文字、列表、图片、段落。 --- ## 何时使用 最基础的列表展示,可承载文字、列表、图片、段落,常用于后台数据展示页面。 ## API ### nz-list | 参数 | 说明 | 类型 | 默认值 | | ---------------- | -------------------------------------------------------------------- | --------------------------------- | -------------- | | `[nzBordered]` | 是否展示边框 | `boolean` | `false` | | `[nzFooter]` | 列表底部 | `string \| TemplateRef` | - | | `[nzHeader]` | 列表头部 | `string \| TemplateRef` | - | | `[nzItemLayout]` | 设置 `nz-list-item` 布局, 设置成 `vertical` 则竖直样式显示, 默认横排 | `'vertical' \| 'horizontal'` | `'horizontal'` | | `[nzLoading]` | 当卡片内容还在加载中时,可以用 `loading` 展示一个占位 | `boolean` | `false` | | `[nzSize]` | list 的尺寸 | `'large' \| 'small' \| 'default'` | `'default'` | | `[nzSplit]` | 是否展示分割线 | `boolean` | `true` | ### nz-list-empty 列表空内容组件 | 参数 | 说明 | 类型 | 默认值 | | -------------- | -------------- | ----------------------------- | ------ | | `[nzNoResult]` | 空内容显示内容 | `string \| TemplateRef` | - | ### nz-list[nzGrid] 使用栅格布局 ### nz-list-header 列表头部位置组件 ### nz-list-footer 列表脚部位置组件 ### nz-list-pagination 列表分页位置组件 ### nz-list-load-more 列表加载更多位置组件 --- ### nz-list-item | 参数 | 说明 | 类型 | 默认值 | | ------------ | ---------------------- | --------- | ------- | | `[nzNoFlex]` | 是否非 `flex` 布局渲染 | `boolean` | `false` | ### ul[nz-list-item-actions] 列表项操作项容器组件 ### nz-list-item-action 列表项操作项组件 ### nz-list-item-extra --- 列表项扩展内容位置组件 ### nz-list-item-meta | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ------------------ | ----------------------------- | ------ | | `[nzAvatar]` | 列表元素的图标 | `string \| TemplateRef` | - | | `[nzDescription]` | 列表元素的描述内容 | `string \| TemplateRef` | - | | `[nzTitle]` | 列表元素的标题 | `string \| TemplateRef` | - | ### nz-list-item-meta-title 列表项元信息标题部分组件 ### nz-list-item-meta-description 列表项元信息描述部分组件 ### nz-list-item-meta-avatar 列表项元信息头像部分组件 | 参数 | 说明 | 类型 | 默认值 | | --------- | -------------------- | -------- | ------ | | `[nzSrc]` | 图片类头像的资源地址 | `string` | - | --- --- category: Components type: 反馈 title: Spin subtitle: 加载中 cover: 'https://gw.alipayobjects.com/zos/alicdn/LBcJqCPRv/Spin.svg' description: 用于页面和区块的加载中状态。 --- ## 何时使用 页面局部处于等待异步数据或正在渲染过程时,合适的加载动效会有效缓解用户的焦虑。 ## API ### nz-spin | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | --------------- | ---------------------------------------------- | --------------------------------- | ----------- | -------- | | `[nzDelay]` | 延迟显示加载效果的时间(防止闪烁),单位:毫秒 | `number` | - | | `[nzIndicator]` | 加载指示符 | `TemplateRef` | - | ✅ | | `[nzSize]` | 组件大小 | `'large' \| 'small' \| 'default'` | `'default'` | | `[nzSpinning]` | 是否旋转 | `boolean` | `true` | | `[nzSimple]` | 是否包裹元素 | `boolean` | `false` | | `[nzTip]` | 当作为包裹元素时,可以自定义描述文案 | `string` | - | --- --- category: Components subtitle: 单选框 type: 数据录入 title: Radio cover: 'https://gw.alipayobjects.com/zos/alicdn/8cYb5seNB/Radio.svg' description: 用于在多个备选项中选中单个状态。 --- ## 何时使用 - 用于在多个备选项中选中单个状态。 - 和 Select 的区别是,Radio 所有选项默认可见,方便用户在比较中选择,因此选项不宜过多。 ## API ### [nz-radio] | [nz-radio-button] | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ---------------------------------------- | ----------------------- | ------- | | `[nzAutoFocus]` | 自动获取焦点 | `boolean` | `false` | | `[nzDisabled]` | 设定 disable 状态 | `boolean` | `false` | | `[ngModel]` | 指定当前是否选中,可双向绑定 | `boolean` | `false` | | `[nzValue]` | 设置 value,与 `nz-radio-group` 配合使用 | `any` | - | | `(ngModelChange)` | 选中变化时回调 | `EventEmitter` | - | ### nz-radio-group 单选框组合,用于包裹一组 `nz-radio`。 | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ------------------------------------------------------------ | --------------------------------- | ----------- | | `[ngModel]` | 指定选中的 `nz-radio` 的 value 值 | `any` | - | | `[nzName]` | `nz-radio-group` 下所有 `input[type="radio"]` 的 `name` 属性 | `string` | - | | `[nzDisabled]` | 设定所有 `nz-radio` disable 状态 | `boolean` | `false` | | `[nzSize]` | 大小,只对按钮样式生效 | `'large' \| 'small' \| 'default'` | `'default'` | | `(ngModelChange)` | 选中变化时回调 | `EventEmitter` | - | | `[nzButtonStyle]` | RadioButton 的风格样式,目前有描边和填色两种风格 | `'outline' \| 'solid'` | `'outline'` | ## 方法 ### [nz-radio] 可以通过 `ViewChild` 等其他方式获取 `NzRadioComponent` 使用以下方法 | 名称 | 描述 | | --------- | -------- | | `blur()` | 移除焦点 | | `focus()` | 获取焦点 | --- --- category: Components type: 数据展示 title: Card subtitle: 卡片 cols: 1 cover: 'https://gw.alipayobjects.com/zos/alicdn/keNB-R8Y9/Card.svg' description: 通用卡片容器。 --- ## 何时使用 最基础的卡片容器,可承载文字、列表、图片、段落,常用于后台概览页面。 ## API ```html 卡片内容 ``` ### nz-card | 参数 | 说明 | 类型 | 默认值 | 支持全局配置 | | --------------- | --------------------------------------------------- | ----------------------------- | ----------- | ------------ | | `[nzActions]` | 卡片操作组,位置在卡片底部 | `Array>` | - | | `[nzBodyStyle]` | 内容区域自定义样式 | `{ [key: string]: string }` | - | | `[nzBordered]` | 是否有边框 | `boolean` | `true` | ✅ | | `[nzCover]` | 卡片封面 | `TemplateRef` | - | | `[nzExtra]` | 卡片右上角的操作区域 | `string \| TemplateRef` | - | | `[nzHoverable]` | 鼠标移过时可浮起 | `boolean` | `false` | ✅ | | `[nzLoading]` | 当卡片内容还在加载中时,可以用 loading 展示一个占位 | `boolean` | `false` | | `[nzTitle]` | 卡片标题 | `string \| TemplateRef` | - | | `[nzType]` | 卡片类型,可设置为 `inner` 或 不设置 | `'inner'` | - | | `[nzSize]` | 卡片的尺寸 | `'default' \| 'small'` | `'default'` | ✅ | ### nz-card-meta | 参数 | 说明 | 类型 | 默认值 | | ----------------- | --------- | ----------------------------- | ------ | | `[nzAvatar]` | 头像/图标 | `TemplateRef` | - | | `[nzDescription]` | 描述内容 | `string \| TemplateRef` | - | | `[nzTitle]` | 标题内容 | `string \| TemplateRef` | - | ### [nz-card-grid] | 参数 | 说明 | 类型 | 默认值 | 支持全局配置 | | --------------- | ---------------- | --------- | ------ | ------------ | | `[nzHoverable]` | 鼠标移过时可浮起 | `boolean` | `true` | - | 分隔卡片内容区域 ### nz-card-tab 分隔页签标题区域 --- --- category: Components subtitle: 哈希码 type: 特色组件 title: HashCode tag: 17.0.0 cover: 'https://img.alicdn.com/imgextra/i3/O1CN01jn3OGS1qq7Xkq6O6b_!!6000000005546-2-tps-1074-374.png' description: 展示区块链数据的哈希值。 --- ## 何时使用 哈希码组件是以 64 位设计的样式,如果给出的数据不足或者高于 64 位,可能会带来一些展示上的差异。 ## API ### nz-hash-code | 参数 | 说明 | 类型 | 默认值 | | ------------ | ---------------- | ------------------------------------------- | ------------ | | `[nzValue]` | 哈希码的值 | `string` | - | | `[nzTitle]` | 左上角的描述内容 | `string` | `'HashCode'` | | `[nzLogo]` | 右上角的展示 | `TemplateRef \| string` | - | | `[nzMode]` | 展示模式 | `'single' \| 'double' \| 'strip' \| 'rect'` | `'double'` | | `[nzType]` | 样式 | `'default' \| 'primary'` | `'primary'` | | `(nzOnCopy)` | 点击"复制"的回调 | `EventEmitter` | - | --- --- category: Components subtitle: 固钉 type: 其他 title: Affix cover: 'https://gw.alipayobjects.com/zos/alicdn/tX6-md4H6/Affix.svg' description: 将页面元素钉在可视范围。 --- ## 何时使用 当内容区域比较长,需要滚动页面时,这部分内容对应的操作或者导航需要在滚动范围内始终展现。常用于侧边菜单和按钮组合。 页面可视范围过小时,慎用此功能以免遮挡页面内容。 ## API ### nz-affix | 成员 | 说明 | 类型 | 默认值 | 全局配置 | | ------------------ | ------------------------------------------------------------------------- | ----------------------- | -------- | -------- | | `[nzOffsetBottom]` | 距离窗口底部达到指定偏移量后触发 | `number` | - | ✅ | | `[nzOffsetTop]` | 距离窗口顶部达到指定偏移量后触发 | `number` | `0` | ✅ | | `[nzTarget]` | 设置 `nz-affix` 需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 | `string \| HTMLElement` | `window` | | `(nzChange)` | 固定状态改变时触发的回调函数 | `EventEmitter` | - | **注意:**`nz-affix` 内的元素不要使用绝对定位,如需要绝对定位的效果,可以直接设置 `nz-affix` 为绝对定位: ```html ... ``` --- --- category: Components subtitle: 图标 type: 通用 title: Icon hasPageDemo: true cover: 'https://gw.alipayobjects.com/zos/alicdn/rrwbSt3FQ/Icon.svg' description: 语义化的矢量图形。 --- ## 图标列表 新版图标可能略有缺失,我们将与 [Ant Design](https://ant.design/components/icon-cn/) 同步保持图标的更新。 ## API ### nz-icon, [nz-icon] | 参数 | 说明 | 类型 | 默认值 | 支持全局配置 | | ------------------ | ------------------------------------------------------------ | ------------------------------ | ----------- | ------------ | | `[nzType]` | 图标类型,遵循图标的命名规范 | string | - | - | | `[nzTheme]` | 图标主题风格。可选实心、描线、双色等主题风格,适用于官方图标 | `'fill'丨'outline'丨'twotone'` | `'outline'` | ✅ | | `[nzSpin]` | 是否有旋转动画 | `boolean` | `false` | - | | `[nzTwotoneColor]` | 双色图标的主要颜色,默认为 Ant Design 蓝色 | `string (十六进制颜色)` | - | ✅ | | `[nzIconfont]` | 指定来自 IconFont 的图标类型 | string | - | - | | `[nzRotate]` | 图标旋转角度 | `number` | - | - | ### NzIconService | 方法 | 说明 | 参数 | | ---------------------- | ---------------------------------------------------------------------------------- | ------------------------ | | `addIcon()` | 用于静态引入图标,可传入多个值(或者用数组解构赋值) | `IconDefinition` | | `addIconLiteral()` | 用于静态引入用户自定义图标 | `string`, `string (SVG)` | | `fetchFromIconfont()` | 用于从 IconFont 获取图标资源文件 | `NzIconfontOption` | | `changeAssetsSource()` | 用于修改动态加载图标的资源前缀,使得你可以部署图标资源到你想要的任何位置,例如 CDN | `string` | ### SVG 图标 NG-ZORRO 采用 svg 图标,带来了以下优势: - 支持多色图标。 - 在低端设备上 SVG 有更好的清晰度。 - 对于内建图标的更换可以提供更多 API,而无需样式覆盖。 你可以使用 `nz-icon` 组件,传入 `theme` 以明确图标的主题风格,例如: ```html ``` ### 静态加载与动态加载 对于 Ant Design 提供的图标,我们提供了两种方式来加载图标资源文件。 **静态加载**,可以在 `app.config.ts` 中使用 `provideNzIcons` 引入你需要的图标(推荐)或者是全部的图标,例如: ```typescript import { IconDefinition } from '@ant-design/icons-angular'; import { provideNzIcons } from 'ng-zorro-antd/icon'; // 引入你需要的图标,比如你需要 fill 主题的 AccountBook Alert 和 outline 主题的 Alert,推荐 ✔️ import { AccountBookFill, AlertFill, AlertOutline } from '@ant-design/icons-angular/icons'; const icons: IconDefinition[] = [AccountBookFill, AlertOutline, AlertFill]; // 引入全部的图标,不推荐 ❌ // import * as AllIcons from '@ant-design/icons-angular/icons'; // const antDesignIcons = AllIcons as Record; // const icons: IconDefinition[] = Object.keys(antDesignIcons).map(key => antDesignIcons[key]) export const appConfig: ApplicationConfig = { providers: [provideNzIcons(icons)] }; ``` 本质上是调用了 `NzIconService` 的 `addIcon` 方法,引入后的文件会被打包到 `.js` 文件中。 静态引入会增加包体积,所以我们建议尽可能地使用动态加载,如果要静态加载,也仅仅加载你需要用到的图标。 > 为了加快渲染速度,NG-ZORRO 本身用到的图标是静态引入的。官网的图标是动态引入的。 **动态加载**,这是为了减少包体积而提供的方式。当 NG-ZORRO 检测用户想要渲染的图标还没有静态引入时,会发起 HTTP 请求动态引入。 你只需要配置 `angular.json` 文件: ```json { "assets": [ { "glob": "**/*", "input": "./node_modules/@ant-design/icons-angular/src/inline-svg/", "output": "/assets/" } ] } ``` 你可以通过 `NzIconService` 的 `changeAssetsSource()` 方法来修改图标资源的位置,这样你就可以部署这些资源到 CDN 上。你的参数会被直接添加到 `assets/` 的前面。 例如,你在 `https://mycdn.somecdn.com/icons/assets` 目录下部署了静态资源文件,则可以通过调用 `changeAssetsSource('https://mycdn.somecdn.com/icons')`,来告诉 NG-ZORRO 从这个位置动态加载图标资源。 ### 在子模块中补充图标 有时候,为了避免增大 `main.js` 的体积,你可能想要在懒加载的组件中或路由的 `providers` 中使用 `provideNzIconsPatch` 来补充图标 ```typescript import { NzIconModule, provideNzIconsPatch } from 'ng-zorro-antd/icon'; // 在 xxx.component.ts 中 @Component({ imports: [NzIconModule], providers: [provideNzIconsPatch([QuestionOutline])] }) class ChildComponent {} // 或 在 xxx.routes.ts 中 const routes: Routes = [ { path: '', providers: [provideNzIconsPatch([QuestionOutline])] } ]; ``` 这样,当 QuestionOutline 图标加载之后,整个应用都能够使用它。 ### 双色图标主色 对于双色图标,可以通过提供全局配置 `{ nzIcon: { nzTwotoneColor: 'xxx' } }` 或 `NzConfigService` 的对应方法修改来全局设置图标主色。 ### 自定义 font 图标 我们提供了 `fetchFromIconfont` 方法,方便开发者调用在 [iconfont.cn](http://iconfont.cn/) 上自行管理的图标。 ```typescript this._iconService.fetchFromIconfont({ scriptUrl: 'https://at.alicdn.com/t/font_8d5l8fzk5b87iudi.js' }); ``` ```html ``` 其本质上是创建了一个使用 `` 标签渲染图标的组件。 `options` 的配置项如下: | 参数 | 说明 | 类型 | 默认值 | | ----------- | ---------------------------------------------------------------------------------------------- | ------ | ------ | | `scriptUrl` | [iconfont.cn](http://iconfont.cn/) 项目在线生成的 `js` 地址,在 `namespace` 也设置的情况下有效 | string | - | 在 `scriptUrl` 都设置有效的情况下,组件在渲染前会自动引入 [iconfont.cn](http://iconfont.cn/) 项目中的图标符号集,无需手动引入。 见 [iconfont.cn 使用帮助](http://iconfont.cn/help/detail?spm=a313x.7781069.1998910419.15&helptype=code) 查看如何生成 js 地址。 ### 命名空间 用户可以使用该功能方便地添加自己的图标。在渲染自定义图标时,只需要将 `type` 指定为 `namespace:name` 的形式,`nz-icon` 组件就会在用户自行添加的图标中进行检索并渲染。同时支持静态和动态引入。 静态引入,只需要调用 `NzIconService` 的 `addIconLiteral` 方法即可。 动态引入,只需要保证 SVG 资源文件放到了相应的目录,即 `assets/${namespace}`。 例如你在 `zoo` 命名空间下有一个 `panda` 图标,你需要将 `panda.svg` 放到 `assets/zoo` 目录下。 ## 常见问题 ### 图标都不见了! 你是不是没有阅读以上的文档? ### 我想静态引入全部的图标,该怎么做? 尽管这是不推荐的行为,实际上我们已经在 静态加载与动态加载 部分演示过了: ```typescript import * as AllIcons from '@ant-design/icons-angular/icons'; const antDesignIcons = AllIcons as Record; const icons: IconDefinition[] = Object.keys(antDesignIcons).map(key => antDesignIcons[key]); ``` 然后通过 `provideNzIcons` 或者 `NzIconService` 的 `addIcon` 方法引入。 ### 动态加载会不会影响网页的性能? 我们用了多种手段来尽量减少动态请求,包括先静态后动态、缓存和相同图标的请求复用,用户很少能感知到图标是异步加载的。 在网络环境尚可的情况下,即使是有三百多个图标同时展示的 NG-ZORRO 官网,也基本没有卡顿。 对于加载速度要求更高的用户,我们也支持 CDN。 ### 我怎么知道一个图标的静态引入名? 很简单,大写驼峰加主题即为图标的引入名。比如 `alibaba` 的引入名就是 `AlibabaOutline`,事实上,编辑器的自动补全能帮助到你。 --- --- category: Components subtitle: 图片 type: 数据展示 title: Image cover: 'https://gw.alipayobjects.com/zos/antfincdn/D1dXz9PZqa/image.svg' description: 可预览的图片。 --- ## 何时使用 - 需要展示图片时使用。 - 加载大图时渐进加载或加载失败时容错处理。 ## API ### [nz-image] | 参数 | 说明 | 类型 | 默认值 | 支持全局配置 | | --------------------- | -------------------------------------------------------------------------------------------------------- | ----------- | ------- | ------------ | | `nzSrc` | 图片地址 | `string` | - | - | | `nzFallback` | 加载失败容错地址 | `string` | - | ✅ | | `nzPlaceholder` | 加载占位地址 | `string` | - | ✅ | | `nzDisablePreview` | 是否禁止预览 | `boolean` | `false` | ✅ | | `nzCloseOnNavigation` | 当用户在历史中前进/后退时是否关闭预览。注意,这通常不包括点击链接(除非用户使用 HashLocationStrategy)。 | `boolean` | `false` | ✅ | | `nzDirection` | 文字方向 | `Direction` | `'ltr'` | ✅ | | `nzScaleStep` | `1 + nzScaleStep` 为缩放放大的每步倍数 | `number` | `0.5` | ✅ | 其他属性见 [](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#Attributes) ### NzImageService | 参数 | 说明 | 类型 | 默认值 | | --------- | -------- | ----------------------- | ------ | | `images` | 预览图片 | `NzImage[]` | - | | `options` | 预览参数 | `NzImagePreviewOptions` | - | ## 相关类型定义 ### NzImage | 参数 | 说明 | 类型 | 默认值 | | -------- | -------- | -------- | ------ | | `src` | src | `string` | - | | `alt` | alt | `string` | - | | `width` | 图片宽度 | `string` | - | | `height` | 图片高度 | `string` | - | ### NzImagePreviewOptions | 参数 | 说明 | 类型 | 默认值 | | --------------------- | -------------------------------------------------------------------------------------------------------- | --------- | ------- | | `nzKeyboard` | 是否支持键盘 esc 关闭、左右键切换图片 | `boolean` | `true` | | `nzMaskClosable` | 点击蒙层是否允许关闭 | `boolean` | `true` | | `nzCloseOnNavigation` | 当用户在历史中前进/后退时是否关闭预览。注意,这通常不包括点击链接(除非用户使用 HashLocationStrategy)。 | `boolean` | `true` | | `nzZIndex` | 设置预览层的 z-index | `number` | `1000` | | `nzZoom` | 缩放比例 | `number` | `1` | | `nzRotate` | 旋转角度 | `number` | `0` | | `nzScaleStep` | `1 + nzScaleStep` 为缩放放大的每步倍数 | `number` | `0.5` | | `nzFlipHorizontally` | 在水平向量上翻转图像 | `boolean` | `false` | | `nzFlipVertically` | 在垂直向量上翻转图像 | `boolean` | `false` | ### NzImagePreviewRef | 名称 | 描述 | | ------------------------------- | ------------ | | `switchTo(index: number): void` | 设置预览索引 | | `prev(): void` | 上一张 | | `next(): void` | 下一张 | | `close(): void` | 关闭预览 | ### NzImageGroupComponent | 名称 | 描述 | 类型 | 默认值 | | ------------- | -------------------------------------- | -------- | ------ | | `nzScaleStep` | `1 + nzScaleStep` 为缩放放大的每步倍数 | `number` | - | --- --- category: Components subtitle: 图片 type: 数据展示 title: Image cols: 1 experimental: true description: 实验性的图片组件。 --- ## 何时使用 - 需要浏览器优先加载图片时(需要在 SSR 下处理)。 - 需要对高清显示器(如视网膜屏)优化时。 - 使用图片 CDN 服务时。 - 以及 [Image documentation](/components/image/zh) 中的功能 - 下一步计划 - 添加 [sizes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-sizes) 属性及响应式的支持 ## API ### nz-image | 参数 | 说明 | 类型 | 默认值 | 支持全局配置 | | -------------- | ---------------------------------------------------------------------------------------- | ------------------ | ----------------------- | ------------ | | `nzSrc` | url | `string` | - | | | `nzAlt` | alt | `string` | - | | | `nzWidth` | 宽度 | `number\|string` | `auto` | | | `nzHeight` | 高度 | `number\|string` | `auto` | | | `nzAutoSrcset` | 是否优化图片加载 | `boolean` | `false` | ✅ | | `nzSrcLoader` | 加载器 | `NzImageSrcLoader` | `defaultImageSrcLoader` | ✅ | | `nzPriority` | 是否添加 [preload](https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content) | `boolean` | `false` | | ### NzImageSrcLoader ```ts export type NzImageSrcLoader = (params: { src: string; width: number }) => string; ``` ## 注意 ### nzSrcLoader 使用 `nzSrcLoader` 可以帮助你填充请求图片的关键信息,例如 `src` 和 `srcset`,默认为: ```ts export const defaultImageSrcLoader: NzImageSrcLoader = ({ src }) => { return src; }; ``` 内置的图片 CND 创建方法 ```ts /** * AliObjectsLoader return format * {domain}/{src}?x-oss-process=image/resize,w_{width} */ export function createAliObjectsLoader(domain: string): NzImageSrcLoader; /** * ImgixLoader return format * {domain}/{src}?format=auto&fit=max&w={width} */ export function createImgixLoader(domain: string): NzImageSrcLoader; /** * CloudinaryLoader return format * {domain}/c_limit,q_auto,w_{width}/{src} */ export function createCloudinaryLoader(domain: string): NzImageSrcLoader; ``` ### 响应式图片和预加载图片 使用响应式图片可以帮助网页在不同的设备上显示良好的效果,预加载图片可以帮助你更快地加载图片,更多信息请参考: - [preloading responsive images](https://web.dev/preload-responsive-images/) - [next.js image component and image optimization](https://nextjs.org/docs/basic-features/image-optimization) --- --- category: Components subtitle: 多选框 type: 数据录入 title: Checkbox cover: 'https://gw.alipayobjects.com/zos/alicdn/8nbVbHEm_/CheckBox.svg' description: 收集用户的多项选择。 --- ## 何时使用 - 在一组可选项中进行多项选择时; - 单独使用可以表示两种状态之间的切换,和 `switch` 类似。区别在于切换 `switch` 会直接触发状态改变,而 `checkbox` 一般用于状态标记,需要和提交操作配合。 ## API ### [nz-checkbox] | 参数 | 说明 | 类型 | 默认值 | | ------------------- | --------------------------------------------- | ----------------------- | ------- | | `[nzId]` | 组件内部 input 的 `id` 值 | `string` | - | | `[nzName]` | 组件内部 input 的 `name` 值 | `string` | - | | `[nzAutoFocus]` | 自动获取焦点 | `boolean` | `false` | | `[nzDisabled]` | 设定 disable 状态 | `boolean` | `false` | | `[ngModel]` | 指定当前是否选中,可双向绑定 | `boolean` | `false` | | `[nzIndeterminate]` | 设置 indeterminate 状态,只负责样式控制 | `boolean` | `false` | | `[nzValue]` | 仅与 `nz-checkbox-wrapper` 的选中回调配合使用 | `any` | - | | `(ngModelChange)` | 选中变化时回调 | `EventEmitter` | - | ### nz-checkbox-group | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ----------------------------------------- | -------------------------------------------- | ------- | | `[ngModel]` | 指定可选项,可双向绑定 | `string[] \| number[]` | `[]` | | `[nzName]` | CheckboxGroup 下所有 input 的 `name` 属性 | `string` | - | | `[nzOptions]` | 指定可选项 | `string[] \| number[] \| NzCheckboxOption[]` | `[]` | | `[nzDisabled]` | 设定全部 checkbox disable 状态 | `boolean` | `false` | | `(ngModelChange)` | 选中数据变化时的回调 | `EventEmitter` | - | ## 方法 ### [nz-checkbox] | 名称 | 描述 | | --------- | -------- | | `focus()` | 获取焦点 | | `blur()` | 移除焦点 | ## Interfaces ### NzCheckboxOption ```ts export interface NzCheckboxOption { label: string; value: string | number; disabled?: boolean; } ``` --- --- category: Components subtitle: 头像 type: 数据展示 title: Avatar cover: 'https://gw.alipayobjects.com/zos/antfincdn/aBcnbw68hP/Avatar.svg' description: 用来代表用户或事物,支持图片、图标或字符展示。 --- ## API ### nz-avatar | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ----------- | -------- | | `[nzIcon]` | 设置头像的图标类型,参考 `Icon` | `string` | - | | `[nzShape]` | 指定头像的形状 | `'circle' \| 'square'` | `'circle'` | ✅ | | `[nzSize]` | 设置头像的大小 | `'large' \| 'small' \| 'default' \| number` | `'default'` | ✅ | | `[nzGap]` | 字符类型距离左右两侧边界单位像素 | `number` | `4` | ✅ | | `[nzSrc]` | 图片类头像的资源地址 | `string` | - | | `[nzSrcSet]` | 设置图片类头像响应式资源地址 | `string` | - | | `[nzAlt]` | 图像无法显示时的替代文本 | `string` | - | | `[nzText]` | 文本类头像 | `string` | - | | `[nzLoading]` | 设置图片类头像 `` 元素原生 [`loading`](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/img#loading) 属性 | `'eager' \| 'lazy'` | `'eager'` | | | `[nzFetchPriority]` | 设置图片类头像 `` 元素原生 [`fetchpriority`](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/img#fetchpriority) 属性 | `'high' \| 'low' \| 'auto'` | `'auto'` | | | `(nzError)` | 图片加载失败的事件,调用 `preventDefault` 方法会阻止组件默认的 fallback 行为 | `EventEmitter` | - | ### nz-avatar-group ```html ``` --- --- type: 反馈 category: Components subtitle: 对话框 title: Modal cover: 'https://gw.alipayobjects.com/zos/alicdn/3StSdUlSH/Modal.svg' description: 展示一个对话框,提供标题、内容区、操作区。 --- ## 何时使用 需要用户处理事务,又不希望跳转页面以致打断工作流程时,可以使用 `Modal` 在当前页面正中打开一个浮层,承载相应的操作。 另外当需要一个简洁的确认框询问用户时,可以使用精心封装好的 `NzModalService.confirm()` 等方法。 推荐使用加载 Component 的方式弹出 Modal,这样弹出层的 Component 逻辑可以与外层 Component 完全隔离,并且做到可以随时复用, 在弹出层 Component 中可以通过依赖注入`NzModalRef`方式直接获取模态框的组件实例,用于控制在弹出层组件中控制模态框行为。 ## API ### NzModalService 对话框当前分为 2 种模式,`普通模式` 和 `确认框模式`(即`Confirm`对话框,通过调用`confirm/info/success/error/warning`弹出),两种模式对 API 的支持程度稍有不同。 | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------- | -------- | | `nzAfterOpen` | Modal 打开后的回调 | `EventEmitter` | - | | `nzAfterClose` | Modal 完全关闭后的回调,可监听 close/destroy 方法传入的参数 | `EventEmitter` | - | | `nzBodyStyle` | Modal body 样式 | `object` | - | | `nzCancelText` | 取消按钮文字。设为 null 表示不显示取消按钮(若在普通模式下使用了 nzFooter 参数,则该值无效) | `string` | `'取消'` | | `nzCentered` | 垂直居中展示 Modal | `boolean` | `false` | | `nzClosable` | 是否显示右上角的关闭按钮。确认框模式下该值无效(默认会被隐藏) | `boolean` | `true` | | `nzOkLoading` | 确定按钮 loading | `boolean` | `false` | | `nzCancelLoading` | 取消按钮 loading | `boolean` | `false` | | `nzOkDisabled` | 是否禁用确定按钮 | `boolean` | `false` | | `nzCancelDisabled` | 是否禁用取消按钮 | `boolean` | `false` | | `nzDraggable` | 模态框是否可拖动 | `boolean` | `false` | | `nzFooter` | 底部内容。
      1. 仅在普通模式下有效。
      2. 可通过传入 ModalButtonOptions 来最大程度自定义按钮(详见案例或下方说明)。
      3. 当不需要底部时,可以设为 null
      | `string \| TemplateRef<{}> \| ModalButtonOptions[] \| null` | 默认的确定取消按钮 | | `nzKeyboard` | 是否支持键盘 esc 关闭 | `boolean` | `true` | | `nzMask` | 是否展示遮罩 | `boolean` | `true` | ✅ | | `nzMaskClosable` | 点击蒙层是否允许关闭 | `boolean` | `true` | ✅ | | `nzCloseOnNavigation` | 当用户在历史中前进/后退时是否关闭模态框。注意,这通常不包括点击链接(除非用户使用 HashLocationStrategy)。 | `boolean` | `true` | ✅ | | `nzDirection` | 文字方向 | `'ltr' \| 'rtl'` | - | ✅ | | `nzMaskStyle` | 遮罩样式 | `object` | - | | `nzOkText` | 确认按钮文字。设为 null 表示不显示确认按钮(若在普通模式下使用了 nzFooter 参数,则该值无效) | `string` | `'确定'` | | `nzOkType` | 确认按钮类型。与 `nz-button` 的 `nzType` 类型值一致 | `string` | `primary` | | `nzOkDanger` | 确认按钮是否为危险按钮。与 `nz-button` 的 `nzDanger` 值保持一致 | `boolean` | `false` | | `nzStyle` | 可用于设置浮层的样式,调整浮层位置等 | `object` | - | | `nzTitle` | 标题。留空表示不展示标题。TemplateRef 的使用方法可参考案例 | `string \| TemplateRef<{}>` | - | | `nzCloseIcon` | 自定义关闭图标 | `string \| TemplateRef` | - | | `nzVisible` | 对话框是否可见。当以 `` 标签使用时,请务必使用双向绑定,例如:`[(nzVisible)]="visible"` | `boolean` | `false` | | `nzWidth` | 宽度。使用数字时,默认单位为 px | `string \| number` | `520` | | `nzClassName` | 对话框的类名 | `string` | - | | `nzWrapClassName` | 对话框外层容器的类名 | `string` | - | | `nzZIndex` | 设置 Modal 的 `z-index` | `number` | `1000` | | `nzOnCancel` | 点击遮罩层或右上角叉或取消按钮的回调(若 nzContent 为 Component,则将会以该 Component 实例作为参数)。注:当以`NzModalService.create`创建时,此参数应传入 function(回调函数)。该函数可返回 promise,待执行完毕或 promise 结束时,将自动关闭对话框(返回 false 可阻止关闭) | `EventEmitter` | - | | `nzOnOk` | 点击确定回调(若 nzContent 为 Component,则将会以该 Component 实例作为参数)。注:当以`NzModalService.create`创建时,此参数应传入 function(回调函数)。该函数可返回 promise,待执行完毕或 promise 结束时,将自动关闭对话框(返回 false 可阻止关闭) | `EventEmitter` | - | | `nzContent` | 内容 | `string \| TemplateRef<{}> \| Component \| ng-content` | - | | `nzIconType` | 图标 Icon 类型。仅 确认框模式 下有效 | `string` | `'question-circle'` | | `nzAutofocus` | 自动聚焦及聚焦位置,为 `null` 时禁用 | `'ok' \| 'cancel' \| 'auto' \| null` | `'auto'` | #### 采用服务方式创建普通模式对话框 > 您可调用 `NzModalService.create(options)` 来动态创建**普通模式**对话框,这里的 `options` 是一个对象,支持上方 API 中给出的支持 **普通模式** 的参数 ### 确认框模式 - NzModalService.method() 包括: - `NzModalService.info` - `NzModalService.success` - `NzModalService.error` - `NzModalService.warning` - `NzModalService.confirm` 以上均为一个函数,参数为 object,与上方 API 一致。部分属性类型或初始值有所不同,已列在下方: | 参数 | 说明 | 类型 | 默认值 | | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------- | | `nzOnOk` | 点击确定按钮时将执行的回调函数(若 nzContent 为 Component,则将会以该 Component 实例作为参数)。该函数可返回 promise,待执行完毕或 promise 结束时,将自动关闭对话框(返回 false 可阻止关闭) | `function` | - | | `nzOnCancel` | 点击遮罩层或右上角叉或取消按钮的回调(若 nzContent 为 Component,则将会以该 Component 实例作为参数)。该函数可返回 promise,待执行完毕或 promise 结束时,将自动关闭对话框(返回 false 可阻止关闭) | `function` | - | | `nzWidth` | 宽度 | `string \| number` | `416` | | `nzMaskClosable` | 点击蒙层是否允许关闭 | `boolean` | `false` | 以上函数调用后,会返回一个引用,可以通过该引用关闭弹窗。 ```ts constructor(modal: NzModalService) { const ref: NzModalRef = modal.info(); ref.close(); // 或 ref.destroy(); 将直接销毁对话框 } ``` ### 相关类型定义 #### NzModalService 的其他方法/属性 | 方法/属性 | 说明 | 类型 | | --------------- | ----------------------------- | ------------------ | | `openModals` | 当前打开的所有 Modal 引用列表 | `NzModalRef[]` | | `afterAllClose` | 所有 Modal 完全关闭后的回调 | `Observable` | | `closeAll()` | 关闭所有模态框 | `function` | #### NzModalRef > NzModalRef 对象用于控制对话框以及进行内容间的通信 通过服务方式 `NzModalService.xxx()` 创建的对话框,都会返回一个 `NzModalRef` 对象,用于操控该对话框(若使用 nzContent 为 Component 时,也可通过依赖注入 `NzModalRef` 方式获得此对象),该对象具有以下方法: | 方法/属性 | 说明 | | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- | | `afterOpen` | 同 nzAfterOpen,但类型为 Observable<void> | | `afterClose` | 同 nzAfterClose,但类型为 Observable<result:any> | | `close(result: any)` | 关闭(隐藏)对话框。注:当用于以服务方式创建的对话框,此方法将直接 销毁 对话框(同 destroy 方法) | | `destroy(result: any)` | 销毁对话框。注:仅用于服务方式创建的对话框(非服务方式创建的对话框,此方法只会隐藏对话框) | | `getContentComponent()` | 获取对话框内容中`nzContent`的 Component 实例 instance。注:当对话框还未初始化完毕(`ngOnInit`未执行)时,此函数将返回`undefined` | | `getContentComponentRef()` | 获取对话框内容中`nzContent`的 Component 引用 ComponentRef。注:当对话框还未初始化完毕(`ngOnInit`未执行)时,此函数将返回`null` | | `triggerOk()` | 手动触发 nzOnOk | | `triggerCancel()` | 手动触发 nzOnCancel | | `updateConfig(config: ModalOptions): void` | 更新配置 | ### ModalButtonOptions(用于自定义底部按钮) 可将此类型数组传入 `nzFooter`,用于自定义底部按钮。 按钮配置项如下(与 button 组件保持一致): ```ts nzFooter: [{ label: string; // 按钮文本 type?: string; // 类型 danger?: boolean; // 是否danger shape?: string; // 形状 ghost?: boolean; // 是否ghost size?: string; // 大小 autoLoading?: boolean; // 默认为true,若为true时,当onClick返回promise时此按钮将自动置为loading状态 // 提示:下方方法的this指向该配置对象自身。当nzContent为组件类时,下方方法传入的contentComponentInstance参数为该组件类的实例 // 是否显示该按钮 show?: boolean | ((this: ModalButtonOptions, contentComponentInstance?: object) => boolean); // 是否显示为loading loading?: boolean | ((this: ModalButtonOptions, contentComponentInstance?: object) => boolean); // 是否禁用 disabled?: boolean | ((this: ModalButtonOptions, contentComponentInstance?: object) => boolean); // 按钮点击回调 onClick?(this: ModalButtonOptions, contentComponentInstance?: object): void | Promise | any; }] ``` 以上配置项也可在运行态实时改变,来触发按钮行为改变。 ### [nzModalTitle] 自定义标题。 ```html
      Custom Modal Title
      Custom Modal Title ``` ### [nzModalContent] 自定义内容。 ```html
      Custom Modal Content
      Custom Modal Content ``` ### [nzModalFooter] 自定义页脚。 ```html
      ``` --- --- category: Components cols: 1 type: 导航 title: Menu subtitle: 导航菜单 cover: 'https://gw.alipayobjects.com/zos/alicdn/3XZcjGpvK/Menu.svg' description: 为页面和功能提供导航的菜单列表。 --- ## 何时使用 导航菜单是一个网站的灵魂,用户依赖导航在各个页面中进行跳转。一般分为顶部导航和侧边导航,顶部导航提供全局性的类目和功能,侧边导航提供多级结构来收纳和排列网站架构。 更多布局和导航的使用可以参考:[通用布局](/components/layout/zh)。 ## API ```html
      • Menu 1
      • Menu 2
        • SubMenu Item 1
        • SubMenu Item 2
        • SubMenu Item 3
      ``` ### [nz-menu] | 参数 | 说明 | 类型 | 默认值 | | --------------------- | -------------------------------------------- | ---------------------------------------- | ------------ | | `[nzInlineCollapsed]` | `inline` 时菜单是否收起状态 | `boolean` | - | | `[nzInlineIndent]` | `inline` 模式的菜单缩进宽度 | `number` | `24` | | `[nzMode]` | 菜单类型,现在支持垂直、水平、和内嵌模式三种 | `'vertical' \| 'horizontal' \| 'inline'` | `'vertical'` | | `[nzSelectable]` | 是否允许选中 | `boolean` | `true` | | `[nzTheme]` | 主题颜色 | `'light' \| 'dark'` | `'light'` | | `(nzClick)` | 点击 `nz-menu-item` 输出属性 | `EventEmitter` | | ### [nz-menu-item] | 参数 | 说明 | 类型 | 默认值 | | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------- | --------- | ------- | | `[nzDisabled]` | 是否禁用 | `boolean` | `false` | | `[nzSelected]` | 是否被选中 | `boolean` | `false` | | `[nzMatchRouter]` | 是否根据 [routerLink](https://www.angular.cn/api/router/RouterLink) 自动设定 `nzSelected` | `boolean` | `false` | | `[nzMatchRouterExact]` | 是否路由完整精确匹配, 详见 [routerLinkActiveOptions](https://angular.cn/api/router/RouterLinkActive#routerLinkActiveOptions) | `boolean` | `false` | | `[nzDanger]` | 展示错误状态样式 | `boolean` | `false` | ### [nz-submenu] 你可以使用以下三种方式来定义 `nz-submenu` 的标题 ```html
    • SubTitle
    • SubTitle ``` | 参数 | 说明 | 类型 | 默认值 | | -------------------------- | --------------------------- | ------------------------------------------------------------------------------------------- | -------------- | | `[nzPlacement]` | 菜单弹出位置 | `'bottomLeft' \| 'bottomCenter' \| 'bottomRight' \| 'topLeft' \| 'topCenter' \| 'topRight'` | `'bottomLeft'` | | `[nzOpen]` | 是否展开,可双向绑定 | `boolean` | `false` | | `[nzDisabled]` | 是否禁用 | `boolean` | `false` | | `[nzTitle]` | 标题内容 | `string \| TemplateRef` | - | | `[nzIcon]` | 标题中 `icon` 类型 | `string` | - | | `[nzMenuClassName]` | 自定义子菜单容器类名 | `string` | - | | `[nzTriggerSubMenuAction]` | SubMenu 展开/关闭的触发行为 | `'hover' \| 'click'` | `'hover'` | | `(nzOpenChange)` | 展开回调 | `EventEmitter` | - | ### [nz-menu-group] 你可以使用以下三种方式来定义 `nz-menu-group` 的标题 ```html
    • < title> SubTitle
    • SubTitle ``` | 参数 | 说明 | 类型 | 默认值 | | ----------- | -------- | ----------------------------- | ------ | | `[nzTitle]` | 标题内容 | `string \| TemplateRef` | - | ### [nz-menu-divider] 菜单项分割线,只用在弹出菜单内。 --- --- category: Components subtitle: 布局 type: 布局 cols: 1 title: Layout cover: 'https://gw.alipayobjects.com/zos/alicdn/hzEndUVEx/Layout.svg' description: 协助进行页面级整体布局。 --- ## 设计规则 ### 尺寸 一级导航项偏左靠近 logo 放置,辅助菜单偏右放置。 - 顶部导航(大部分系统):一级导航高度 `64px`,二级导航 `48px`。 - 顶部导航(展示类页面):一级导航高度 `80px`,二级导航 `56px`。 - 顶部导航高度的范围计算公式为:`48+8n`。 - 侧边导航宽度的范围计算公式:`200+8n`。 ### 交互 - 一级导航和末级的导航需要在可视化的层面被强调出来; - 当前项应该在呈现上优先级最高; - 当导航收起的时候,当前项的样式自动赋予给它的上一个层级; - 左侧导航栏的收放交互同时支持手风琴和全展开的样式,根据业务的要求进行适当的选择。 ### 视觉 导航样式上需要根据信息层级合理的选择样式: - **大色块强调** 建议用于底色为深色系时,当前页面父级的导航项。 - **高亮火柴棍** 当导航栏底色为浅色系时使用,可用于当前页面对应导航项,建议尽量在导航路径的最终项使用。 - **字体高亮变色** 从可视化层面,字体高亮的视觉强化力度低于大色块,通常在当前项的上一级使用。 - **字体放大** `12px`、`14px` 是导航的标准字号,14 号字体用在一、二级导航中。字号可以考虑导航项的等级做相应选择。 ## 组件概述 - `nz-layout`:布局容器,其下可嵌套 `nz-header` `nz-sider` `nz-content` `nz-footer` 或 `nz-layout` 本身,可以放在任何父容器中。 - `nz-header`:顶部布局,自带默认样式,其下可嵌套任何元素,只能放在 `nz-layout` 中。 - `nz-sider`:侧边栏,自带默认样式及基本功能,其下可嵌套任何元素,只能放在 `nz-layout` 中。 - `nz-content`:内容部分,自带默认样式,其下可嵌套任何元素,只能放在 `nz-layout` 中。 - `nz-footer`:底部布局,自带默认样式,其下可嵌套任何元素,只能放在 `nz-layout` 中。 > 注意:采用 flex 布局实现,请注意[浏览器兼容性](http://caniuse.com/#search=flex)问题。 ## API ```html header left sidebar main content right sidebar footer ``` ### nz-sider 侧边栏。 | 参数 | 说明 | 类型 | 默认值 | | --------------------- | --------------------------------------------------- | ----------------------------------------------- | -------- | | `[nzBreakpoint]` | 触发响应式布局的断点 | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| 'xxl'` | - | | `[nzCollapsedWidth]` | 收缩宽度,设置为 0 会出现特殊 `trigger` | `number` | `64` | | `[nzCollapsible]` | 是否可收起 | `boolean` | `false` | | `[nzCollapsed]` | 当前收起状态,可双向绑定 | `boolean` | `false` | | `[nzReverseArrow]` | 翻转折叠提示箭头的方向,当 `Sider` 在右边时可以使用 | `boolean` | `false` | | `[nzTrigger]` | 自定义 `trigger`,设置为 `null` 时隐藏 `trigger` | `TemplateRef` | - | | `[nzZeroTrigger]` | 自定义 `nzCollapsedWidth` 为 0 时的 特殊`trigger` | `TemplateRef` | - | | `[nzWidth]` | 宽度 | `number \| string` | `200` | | `[nzTheme]` | 主题颜色 | `'light' \| 'dark'` | `'dark'` | | `(nzCollapsedChange)` | 展开-收起时的回调函数 | `EventEmitter` | - | #### breakpoint width ```js { xs: '480px', sm: '768px', md: '992px', lg: '1200px', xl: '1600px', xxl: '1600px' } ``` --- --- category: Components subtitle: 开关 type: 数据录入 title: Switch cover: 'https://gw.alipayobjects.com/zos/alicdn/zNdJQMhfm/Switch.svg' description: 使用开关切换两种状态之间。 --- ## 何时使用 - 需要表示开关状态/两种状态之间的切换时; - 和 `checkbox`的区别是,切换 `switch` 会直接触发状态改变,而 `checkbox` 一般用于状态标记,需要和提交操作配合。 ## API ### nz-switch | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | ----------------------- | ----------------------------------- | ----------------------------- | ----------- | -------- | | `[nzId]` | 组件内部 button 的 id 值 | `string` | - | | `[ngModel]` | 指定当前是否选中,可双向绑定 | `boolean` | `false` | | `[nzCheckedChildren]` | 选中时的内容 | `string \| TemplateRef` | - | | `[nzUnCheckedChildren]` | 非选中时的内容 | `string \| TemplateRef` | - | | `[nzDisabled]` | disable 状态 | `boolean` | `false` | | `[nzSize]` | 开关大小,可选值:`default` `small` | `'small' \| 'default'` | `'default'` | ✅ | | `[nzLoading]` | 加载中的开关 | `boolean` | `false` | | `[nzControl]` | 是否完全由用户控制状态 | `boolean` | `false` | | `(ngModelChange)` | 当前是否选中的回调 | `EventEmitter` | `false` | #### 方法 | 名称 | 描述 | | ------- | -------- | | focus() | 获取焦点 | | blur() | 移除焦点 | --- --- category: Components subtitle: 弹性布局 type: 布局 cols: 1 title: Flex cover: 'https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*SMzgSJZE_AwAAAAAAAAAAAAADrJ8AQ/original' tag: 17.1.0 description: 用于对齐的弹性布局容器。 --- ## 何时使用 - 适合设置元素之间的间距。 - 适合设置各种水平、垂直对齐方式。 ### 与 Space 组件的区别 - Space 为内联元素提供间距,其本身会为每一个子元素添加包裹元素用于内联对齐。适用于行、列中多个子元素的等距排列。 - Flex 为块级元素提供间距,其本身不会添加包裹元素。适用于垂直或水平方向上的子元素布局,并提供了更多的灵活性和控制能力。 ## API ### [nz-flex] | 参数 | 说明 | 类型 | 默认值 | | -------------- | ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------- | ---------- | | `[nzVertical]` | 使用 `flex-direction: column`描述flex的垂直方向 | `boolean` | `false` | | `[nzJustify]` | 设置元素在主轴方向上的对齐方式,参照 [justify-content](https://developer.mozilla.org/zh-CN/docs/Web/CSS/justify-content) | `NzJustify` | `'normal'` | | `[nzAlign]` | 设置元素在交叉轴方向上的对齐方式,参照 [align-items](https://developer.mozilla.org/zh-CN/docs/Web/CSS/align-items) | `NzAlign` | `'normal'` | | `[nzGap]` | 设置项目的间隙 | `'small' \| 'middle' \| 'large' \| number \| string` | `0` | | `[nzWrap]` | 指定 flex 元素单行显示还是多行显示,参照 [flex-wrap](https://developer.mozilla.org/zh-CN/docs/Web/CSS/flex-wrap) | `NzWrap` | `'nowrap'` | | `[nzFlex]` | flex css简写属性,参照 [flex](https://developer.mozilla.org/zh-CN/docs/Web/CSS/flex) | `NzFlex` | `'unset'` | --- --- category: Components subtitle: 徽标数 type: 数据展示 title: Badge cover: 'https://gw.alipayobjects.com/zos/antfincdn/6%26GF9WHwvY/Badge.svg' description: 图标右上角的圆形徽标数字。 --- ## 何时使用 一般出现在通知图标或头像的右上角,用于显示需要处理的消息条数,通过醒目视觉形式吸引用户处理。 ## API ### nz-badge | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | ------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------- | ----------- | -------- | | `[nzStandalone]` | 是否独立使用 | `boolean` | - | - | | `[nzColor]` | 自定义小圆点的颜色 | `string` | - | ✅ | | `[nzCount]` | 展示的数字,大于 nzOverflowCount 时显示为 `${nzOverflowCount}+`,为 0 时隐藏 | `number \| TemplateRef` | - | | `[nzDot]` | 不展示数字,只有一个小红点 | `boolean` | `false` | | `[nzShowDot]` | 是否展示小红点 | `boolean` | `true` | | `[nzOverflowCount]` | 展示封顶的数字值 | `number` | `99` | ✅ | | `[nzShowZero]` | 当数值为 0 时,是否展示 Badge | `boolean` | `false` | | `[nzSize]` | 在设置了 `nzCount` 的前提下有效,设置小圆点的大小 | `'default' \| 'small'` | `'default'` | | `[nzStatus]` | 设置 `nz-badge` 为状态点 | `'success' \| 'processing' \| 'default' \| 'error' \| 'warning'` | - | | `[nzText]` | 在设置了 `nzStatus` 的前提下有效,设置状态点的文本 | `string \| TemplateRef` | - | | `[nzTitle]` | 设置鼠标放在状态点上时显示的文字 (非独立使用时), 为 `null` 时隐藏 | `string \| null` | `nzCount` | | `[nzOffset]` | 设置状态点的位置偏移,格式为 `[x, y]` (非独立使用时) | `[number, number]` | - | ### nz-ribbon | 参数 | 说明 | 类型 | 默认值 | | --------------- | ---------------- | ----------------------------- | ------- | | `[nzColor]` | 自定义缎带的颜色 | `string` | - | | `[nzPlacement]` | 缎带的位置 | `'start' \| 'end'` | `'end'` | | `[nzText]` | 缎带中填入的内容 | `string \| TemplateRef` | - | --- --- category: Components subtitle: 悬浮按钮 type: 通用 title: FloatButton cover: 'https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*HS-wTIIwu0kAAAAAAAAAAAAADrJ8AQ/original' tag: 19.0.0 description: 悬浮于页面上方的按钮。 --- ## 何时使用 - 用于网站上的全局功能; - 无论浏览到何处都可以看见的按钮。 ## API ### 共同的 API | 参数 | 说明 | 类型 | 默认值 | 版本 | | ----------------- | ----------------------------------------------------- | ------------------------------------- | ----------- | ------ | | `[nzIcon]` | 自定义图标 | `string \| TemplateRef \| null` | - | | `[nzDescription]` | 文字及其它内容 | `string \| TemplateRef \| null` | - | | `[nzType]` | 按钮类型 | `'default' \| 'primary'` | `'default'` | | `[nzShape]` | 按钮形状 | `'circle' \| 'square'` | `'circle'` | | `[nzHref]` | 点击跳转的地址,指定此参数 button 的行为和 a 链接一致 | `string` | - | | `[nzTarget]` | 相当于 a 标签的 target 属性,`nzHref` 存在时生效 | `string` | - | | `[nzBadge]` | 徽标数 | `NzFloatButtonBadge` | - | 20.4.0 | | `(nzOnClick)` | 点击按钮时的回调 | `EventEmitter` | - | ### nz-float-button-group | 参数 | 说明 | 类型 | 默认值 | | ------------------ | -------------------------------- | ---------------------------------------- | ------- | | `[nzTrigger]` | 触发方式(有触发方式为菜单模式) | `'click' \| 'hover'` | - | | `[nzPlacement]` | 自定义菜单弹出位置 | `'top' \| 'right' \| 'bottom' \| 'left'` | `'top'` | | `[nzOpen]` | 受控展开 | `boolean` | - | | `(nzOnOpenChange)` | 展开收起时的回调 | `EventEmitter` | - | ### nz-float-button-top | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | ---------------------- | ------------------------------------------------------------- | ------------------- | -------- | -------- | | `[nzVisibilityHeight]` | 滚动高度达到此值时才出现 `nz-float-button-top` | `number` | `400` | ✅ | | `[nzTarget]` | 设置需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 | `string \| Element` | `window` | - | | `[nzDuration]` | 回到顶部所需时间(毫秒) | `number` | `450` | - | ### Interfaces #### NzFloatButtonBadge ```ts // NzBadge 组件属性中移除 nzShowDot, nzTitle, nzStatus, nzText export interface NzFloatButtonBadge { nzDot?: boolean; nzCount?: number | TemplateRef; nzShowZero?: boolean; nzOverflowCount?: number; nzColor?: string; nzOffset?: [number, number]; nzSize?: 'default' | 'small'; } ``` --- --- category: Components type: 数据展示 title: Collapse subtitle: 折叠面板 cols: 1 cover: 'https://gw.alipayobjects.com/zos/alicdn/IxH16B9RD/Collapse.svg' description: 可以折叠/展开的内容区域。 --- ## 何时使用 - 对复杂区域进行分组和隐藏,保持页面的整洁。 - `手风琴` 是一种特殊的折叠面板,只允许单个内容区域展开。 ## API ### nz-collapse | 参数 | 说明 | 类型 | 默认值 | 全局配置 | 版本 | | ------------------------ | ---------------------- | -------------------- | ---------- | -------- | ------ | | `[nzAccordion]` | 是否每次只打开一个 tab | `boolean` | `false` | ✅ | | `[nzBordered]` | 是否有边框 | `boolean` | `true` | ✅ | | `[nzGhost]` | 使折叠面板透明且无边框 | `boolean` | `false` | ✅ | | `[nzExpandIconPosition]` | 设置图标位置 | `'start' \| 'end'` | `'start'` | - | | `[nzSize]` | 设置折叠面板大小 | `'small' \| 'large'` | `'middle'` | - | 20.2.0 | ### nz-collapse-panel | 参数 | 说明 | 类型 | 默认值 | 全局配置 | 版本 | | ------------------ | ------------------------------------------ | ---------------------------------- | ------- | -------- | ------ | | `[nzDisabled]` | 禁用后的面板展开与否将无法通过用户交互改变 | `boolean` | `false` | - | | `[nzHeader]` | 面板头内容 | `string \| TemplateRef` | - | - | | `[nzExpandedIcon]` | 自定义切换图标 | `string \| TemplateRef` | - | - | | `[nzExtra]` | 自定义渲染每个面板右上角的内容 | `string \| TemplateRef` | - | - | | `[nzShowArrow]` | 是否展示箭头 | `boolean` | `true` | ✅ | | `[nzActive]` | 面板是否展开,可双向绑定 | `boolean` | - | - | | `[nzCollapsible]` | 设置可折叠触发区域 | `'header' \| 'icon' \| 'disabled'` | - | - | 20.2.0 | | `(nzActiveChange)` | 面板展开回调 | `EventEmitter` | - | - | --- --- type: 反馈 category: Components subtitle: 抽屉 title: Drawer cover: 'https://gw.alipayobjects.com/zos/alicdn/7z8NJQhFb/Drawer.svg' description: 屏幕边缘滑出的浮层面板。 --- 抽屉从父窗体边缘滑入,覆盖住部分父窗体内容。用户在抽屉内操作时不必离开当前任务,操作完成后,可以平滑地回到到原任务。 ## 何时使用 - 当需要一个附加的面板来控制父窗体内容,这个面板在需要时呼出。比如,控制界面展示样式,往界面中添加内容。 - 当需要在当前任务流中插入临时任务,创建或预览附加内容。比如展示协议条款,创建子对象。 ## API ### nz-drawer | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | ----------------------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------------------- | ----------- | -------- | | `[nzClosable]` | 是否显示左上角的关闭按钮 | `boolean` | `true` | | `[nzCloseIcon]` | 自定义关闭图标 | `string \| TemplateRef \| null` | `'close'` | | `[nzExtra]` | 抽屉右上角的操作区域 | `string \| TemplateRef \| null` | - | | `[nzMaskClosable]` | 点击蒙层是否允许关闭 | `boolean` | `true` | ✅ | | `[nzMask]` | 是否展示遮罩 | `boolean` | `true` | ✅ | | `[nzCloseOnNavigation]` | 当用户在历史中前进/后退时是否关闭抽屉组件。注意,这通常不包括点击链接(除非用户使用 HashLocationStrategy)。 | `boolean` | `true` | ✅ | | `[nzMaskStyle]` | 遮罩样式 | `object` | `{}` | | `[nzKeyboard]` | 是否支持键盘 esc 关闭 | `boolean` | `true` | | `[nzBodyStyle]` | Drawer body 样式 | `object` | `{}` | | `[nzTitle]` | 标题 | `string \| TemplateRef` | - | | `[nzFooter]` | 抽屉的页脚 | `string \| TemplateRef` | - | | `[nzVisible]` | Drawer 是否可见,可以使用 `[(nzVisible)]` 双向绑定 | `boolean` | - | | `[nzPlacement]` | 抽屉的方向 | `'top' \| 'right' \| 'bottom' \| 'left'` | `'right'` | | `[nzSize]` | 预设抽屉宽度(或高度),default `378px` 和 large `736px` | `'default' \| 'large'` | `'default'` | | `[nzWidth]` | 宽度, 只在方向为 `'right'`或`'left'` 时生效,优先级高于 `nzSize` | `number \| string` | - | | `[nzHeight]` | 高度, 只在方向为 `'top'`或`'bottom'` 时生效,优先级高于 `nzSize` | `number \| string` | - | | `[nzOffsetX]` | x 坐标移量(px), 只在方向为 `'right'`或`'left'` 时生效 | `number` | `0` | | `[nzOffsetY]` | y 坐标移量(px), 高度, 只在方向为 `'top'`或`'bottom'` 时生效 | `number` | `0` | | `[nzWrapClassName]` | 对话框外层容器的类名 | `string` | - | | `[nzZIndex]` | 设置 Drawer 的 `z-index` | `number` | `1000` | | `(nzOnClose)` | 点击遮罩层或右上角叉的回调 | `EventEmitter` | - | ### NzDrawerService | 方法名 | 说明 | 参数 | 返回 | | --------------- | --------------------- | ----------------------- | ------------------- | | create | 创建并打开一个 Drawer | `NzDrawerOptions` | `NzDrawerRef` | ### NzDrawerOptions | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | ------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ----------- | -------- | | nzContent | Drawer body 的内容 | `TemplateRef<{ $implicit: D, drawerRef: NzDrawerRef }> \| Type` | - | | nzContentParams | 内容组件的输入参数 / Template 的 context | `D` | - | | nzOnCancel | 点击遮罩层或右上角叉时执行,该函数可返回 promise 待执行完毕或 promise 结束时,将自动关闭对话框(返回 false 可阻止关闭) | `() => Promise` | - | | nzClosable | 是否显示左上角的关闭按钮 | `boolean` | `true` | | nzCloseIcon | 自定义关闭图标 | `string \| TemplateRef \| null` | `'close'` | | nzExtra | 抽屉右上角的操作区域 | `string \| TemplateRef \| null` | - | | nzMaskClosable | 点击蒙层是否允许关闭 | `boolean` | `true` | ✅ | | nzMask | 是否展示遮罩 | `boolean` | `true` | ✅ | | nzCloseOnNavigation | 当用户在历史中前进/后退时是否关闭抽屉组件。注意,这通常不包括点击链接(除非用户使用 HashLocationStrategy)。 | `boolean` | `true` | ✅ | | nzDirection | 文字方向 | `'ltr' \| 'rtl'` | - | ✅ | | nzKeyboard | 是否支持键盘 esc 关闭 | `boolean` | `true` | | nzMaskStyle | 遮罩样式 | `object` | `{}` | | nzBodyStyle | Modal body 样式 | `object` | `{}` | | nzTitle | 标题 | `string \| TemplateRef` | - | | nzFooter | 页脚 | `string \| TemplateRef` | - | | nzSize | 预设抽屉宽度(或高度),default `378px` 和 large `736px` | `'default' \| 'large'` | `'default'` | | nzWidth | 宽度, 只在方向为 `'right'`或`'left'` 时生效,优先级高于 `nzSize` | `number \| string` | - | | nzHeight | 高度, 只在方向为 `'top'`或`'bottom'` 时生效,优先级高于 `nzSize` | `number \| string` | - | | nzWrapClassName | 对话框外层容器的类名 | `string` | - | | nzZIndex | 设置 Drawer 的 `z-index` | `number` | `1000` | | nzPlacement | 抽屉的方向 | `'top' \| 'right' \| 'bottom' \| 'left'` | `'right'` | | nzOffsetX | x 坐标移量(px) | `number` | `0` | | nzOffsetY | y 坐标移量(px), 高度, 只在方向为 `'top'`或`'bottom'` 时生效 | `number` | `0` | ### NzDrawerRef #### 方法 | 名称 | 说明 | 类型 | | ------------------- | ----------------------------------- | ---------------------- | | close | 关闭 Drawer | `(result?: R) => void` | | open | 打开 Drawer | `() => void` | | getContentComponent | 返回 `nzContent` 为组件时的组件实例 | `() => T \| null` | #### 属性 | 名称 | 说明 | 类型 | | --------------- | ----------------------------------------------------------- | ---------------------------------------- | | afterOpen | 打开之后的回调 | `Observable` | | afterClose | 关闭之后的回调 | `Observable` | | nzClosable | 是否显示右上角的关闭按钮 | `boolean` | | nzCloseIcon | 自定义关闭图标 | `string \| TemplateRef \| null` | | nzMaskClosable | 点击蒙层是否允许关闭 | `boolean` | | nzMask | 是否展示遮罩 | `boolean` | | nzMaskStyle | 遮罩样式 | `object` | | nzKeyboard | 是否支持键盘 esc 关闭 | `boolean` | | nzBodyStyle | Modal body 样式 | `object` | | nzTitle | 标题 | `string \| TemplateRef` | | nzWidth | 宽度 | `number \| string` | | nzHeight | 高度, 只在方向为 `'top'`或`'bottom'` 时生效 | `number \| string` | | nzWrapClassName | 对话框外层容器的类名 | `string` | | nzZIndex | 设置 Drawer 的 `z-index` | `number` | | nzPlacement | 抽屉的方向 | `'top' \| 'right' \| 'bottom' \| 'left'` | | nzOffsetX | x 坐标移量(px) | `number` | | nzOffsetY | y 坐标移量(px), 高度, 只在方向为 `'top'`或`'bottom'` 时生效 | `number` | --- --- category: Components type: 通用 title: Button subtitle: 按钮 cover: 'https://gw.alipayobjects.com/zos/alicdn/fNUKzY1sk/Button.svg' description: 按钮用于开始一个即时操作。 --- ## 何时使用 标记了一个(或封装一组)操作命令,响应用户点击行为,触发相应的业务逻辑。 在 Ant Design 中,我们有五种按钮。 - 🔵 主按钮:用于主行动点,一个操作区域只能有一个主按钮。 - ⚪️ 默认按钮:用于没有主次之分的一组行动点。 - 🫥 虚线按钮:常用于添加操作。 - 🔤 文本按钮:用于最次级的行动点。 - 🔗 链接按钮:一般用于链接,即导航至某位置。 以及四种状态属性与上面配合使用。 - ⚠️ 危险:删除/移动/修改权限等危险操作,一般需要二次确认。 - 👻 幽灵:用于背景色比较复杂的地方,常用在首页/产品页等展示场景。 - 🚫 禁用:行动点不可用的时候,一般需要文案解释。 - 🔃 加载中:用于异步操作等待反馈的时候,也可以避免多次提交。 ## API ### [nz-button] > 注意:nz-button 是一个 Directive,除以下表格之外还支持例如 disabled 等原生 button 的[所有属性](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/button)。 通过设置 Button 的属性来产生不同的按钮样式,推荐顺序为:`nzType` -> `nzShape` -> `nzSize` -> `nzLoading` -> `disabled` 按钮的属性说明如下: | 属性 | 说明 | 类型 | 默认值 | 支持全局配置 | | ------------- | ---------------------------------------------------------------- | ------------------------------------- | ----------- | ------------ | | `[disabled]` | 禁止与 button 交互 | `boolean` | `false` | | `[nzGhost]` | 幽灵属性,使按钮背景透明 | `boolean` | `false` | | `[nzLoading]` | 设置按钮载入状态 | `boolean` | `false` | | `[nzShape]` | 设置按钮形状,可选值为 `circle` `round` 或者不设 | `'circle'\|'round'` | - | | | `[nzSize]` | 设置按钮大小,可选值为 `small` `large` 或者不设 | `'large'\|'small'\|'default'` | `'default'` | ✅ | | `[nzType]` | 设置按钮类型,可选值为 `primary` `dashed` `text` `link` 或者不设 | `'primary'\|'dashed'\|'link'\|'text'` | - | | `[nzBlock]` | 将按钮宽度调整为其父宽度的选项 | `boolean` | `false` | | `[nzDanger]` | 设置危险按钮 | boolean | `false` | | --- --- category: Components subtitle: 排版 type: 通用 title: Typography cols: 1 cover: 'https://gw.alipayobjects.com/zos/alicdn/GOM1KQ24O/Typography.svg' description: 文本的基本格式。 --- ## 何时使用 - 当需要展示标题、段落、列表内容时使用,如文章/博客/日志的文本样式。 - 当需要一列基于文本的基础操作时,如拷贝/省略/可编辑。 ## API ### [nz-typography] | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | ------------------- | --------------------------------------------------- | -------------------------------------------------------------------- | ------------------- | -------- | | `[nzContent]` | 组件内容 | `string` | - | | `[nzCopyable]` | 是否可拷贝,需要配合 `[nzContent]` 使用 | `boolean` | `false` | | `[nzEditable]` | 是否可编辑,需要配合 `[nzContent]` 使用 | `boolean` | `false` | | `[nzCopyIcons]` | 自定义拷贝图标 | `[string \| TemplateRef, string \| TemplateRef]` | `['copy', 'check']` | ✅ | | `[nzCopyTooltips]` | 自定义提示文案,为 `null` 时隐藏文案 | `null \| [string \| TemplateRef, string \| TemplateRef]` | - | ✅ | | `[nzEditIcon]` | 自定义编辑图标 | `string \| TemplateRef` | `'edit'` | ✅ | | `[nzEditTooltip]` | 自定义提示文案,为 `null` 时隐藏文案 | `null \| string \| TemplateRef` | - | ✅ | | `[nzEllipsis]` | 自动溢出省略,动态内容时需要配合 `[nzContent]` 使用 | `boolean` | `false` | | `[nzExpandable]` | 自动溢出省略时是否可展开 | `boolean` | `false` | | | `[nzSuffix]` | 自动溢出省略时的文本后缀 | `string` | - | | | `[nzCopyText]` | 自定义被拷贝的文本 | `string` | - | | | `[nzDisabled]` | 禁用文本 | `boolean` | `false` | | | `[nzEllipsisRows]` | 自动溢出省略时省略行数 | `number` | `1` | ✅ | | `[nzType]` | 文本类型 | `'secondary' \| 'warning' \| 'danger' \| 'success'` | - | | | `(nzContentChange)` | 当用户提交编辑内容时触发 | `EventEmitter` | - | | | `(nzExpandChange)` | 展开省略文本时触发 | `EventEmitter` | - | | | `(nzOnEllipsis)` | 当省略状态变化时触发 | `EventEmitter` | - | | --- --- category: Components type: 数据展示 title: Descriptions subtitle: 描述列表 cols: 1 cover: 'https://gw.alipayobjects.com/zos/alicdn/MjtG9_FOI/Descriptions.svg' description: 展示多个只读字段的组合。 --- ## 何时使用 常见于详情页的信息展示。 ## API ### nz-descriptions | 参数 | 说明 | 类型 | 默认值 | 支持全局配置 | | -------------- | ----------------------------------------------------------------------------------------------------- | ---------------------------------- | ----------------------------------------------- | ------------ | | `[nzTitle]` | 描述列表的标题,显示在最顶部 | `string \| TemplateRef` | `false` | | `[nzExtra]` | 描述列表的操作区域,显示在右上方 | `string \| TemplateRef` | `-` | | `[nzBordered]` | 是否展示边框 | `boolean` | `false` | ✅ | | `[nzColumn]` | 一行的 `nz-descriptions-item` 的数量,可以写成像素值或支持响应式的对象写法 `{ xs: 8, sm: 16, md: 24}` | `number \| object` | `{ xxl: 3, xl: 3, lg: 3, md: 3, sm: 2, xs: 1 }` | ✅ | | `[nzSize]` | 设置列表的大小(只有设置 `nzBordered` 时生效) | `'default' \| 'middle' \| 'small'` | `'default'` | ✅ | | `[nzColon]` | 在标题后显示冒号 | `boolean` | `true` | ✅ | ### nz-descriptions-item | 参数 | 说明 | 类型 | 默认值 | | ----------- | ------------ | ----------------------------- | ------ | | `[nzTitle]` | 内容的描述 | `string \| TemplateRef` | - | | `[nzSpan]` | 包含列的数量 | `number` | `1` | --- --- category: Components subtitle: 提及 type: 数据录入 title: Mention cover: 'https://gw.alipayobjects.com/zos/alicdn/jPE-itMFM/Mentions.svg' description: 用于在输入中提及某人或某事。 --- ## 何时使用 用于在输入中提及某人或某事,常用于发布、聊天或评论功能。 ## API ```html ``` ### nz-mention | 参数 | 说明 | 类型 | 默认值 | 版本 | | ----------------------- | --------------------------------- | -------------------------------------------------------- | -------------------------------- | ------ | | `[nzMentionTrigger]` | 用于指定提及的触发元素 **(必须)** | `HTMLTextAreaElement \| HTMLInputElement` | - | | `[nzMentionSuggestion]` | 自定义建议渲染模板 | `TemplateRef` | - | | `[nzLoading]` | 加载中 | `boolean` | `false` | | `[nzNotFoundContent]` | 未找到时的内容 | `string` | `'无匹配结果,轻敲空格完成输入'` | | `[nzPlacement]` | 建议框位置 | `'bottom' \| 'top'` | `'bottom'` | | `[nzPrefix]` | 触发弹出下拉框的字符 | `string \| string[]` | `'@'` | | `[nzSuggestions]` | 建议内容 | `any[]` | `[]` | | `[nzStatus]` | 设置校验状态 | `'error' \| 'warning'` | - | | `[nzAllowClear]` | 支持清除 | `boolean` | `false` | 20.3.0 | | `[nzClearIcon]` | 自定义的多选框清空图标 | `TemplateRef` | - | 20.3.0 | | `[nzVariant]` | 形态变体 | `'outlined' \| 'filled' \| 'borderless' \| 'underlined'` | `'outlined'` | 20.3.0 | | `[nzValueWith]` | 建议选项的取值方法 | `(any) => string \| (value: string) => string` | - | | `(nzOnSelect)` | 下拉框选择建议时回调 | `EventEmitter` | - | | `(nzOnSearchChange)` | 输入框中 @ 变化时回调 | `EventEmitter` | - | | `(nzOnClear)` | 清空已选项时触发的回调函数 | `EventEmitter` | - | #### 方法 | 方法名 | 说明 | | ----------- | ------------------------------------------- | | getMentions | 获取 `input[nzMentionTrigger]` 中的提及数组 | ### nzMentionTrigger 用于指定提及的触发元素 ```html ``` ```html ``` ### nzMentionSuggestion 自定义建议渲染模板 ```html {{ item.label }} - {{ item.value }} ``` ### MentionOnSearchTypes | 参数 | 说明 | 类型 | 默认值 | | ------ | ---------- | -------- | ------ | | value | 搜索关键词 | `string` | - | | prefix | 触发前缀 | `string` | - | ## FAQ ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components subtitle: 数字输入框 type: 数据录入 title: InputNumber cover: 'https://gw.alipayobjects.com/zos/alicdn/XOS8qZ0kU/InputNumber.svg' tag: 19.0.0 description: 通过鼠标或键盘,输入范围内的数值。 --- ## 何时使用 当需要获取标准数值时。 ## API ### nz-input-number | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------------------- | -------------------------------------------------------------- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------ | | `[ngModel]` | 当前值,可双向绑定 | `number` | - | | `[nzId]` | 输入框的 ID | `string` | - | | `[nzPlaceHolder]` | 占位符 | `string` | - | | `[nzAutoFocus]` | 自动获取焦点 | `boolean` | `false` | | `[nzVariant]` | 形态变体 | `'outlined' \| 'borderless' \| 'filled' \| 'underlined'` | `'outlined'` | 20.0.0 | | `[nzControls]` | 是否显示增减按钮 | `boolean` | `true` | | `[nzDisabled]` | 是否禁用 | `boolean` | `false` | | `[nzFormatter]` | 指定输入框展示值的格式 | `(value: number) => string` | - | | `[nzKeyboard]` | 是否启用键盘快捷行为 | `boolean` | `true` | | `[nzChangeOnWheel]` | 是否启用鼠标滚轮控制 | `boolean` | `true` | 21.0.0 | | `[nzMax]` | 最大值 | `number` | [Number.MAX_SAFE_INTEGER](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) | | `[nzMin]` | 最小值 | `number` | [Number.MIN_SAFE_INTEGER](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER) | | `[nzParser]` | 指定从 `formatter` 里转换回数字的方式,和 `formatter` 搭配使用 | `(value: string) => number` | - | | `[nzPrecision]` | 数值精度,配置 `formatter` 时会以 `formatter` 为准 | `number` | - | | `[nzReadOnly]` | 是否只读 | `boolean` | `false` | | `[nzStatus]` | 状态,可选 `error` `warning` | `'error' \| 'warning'` | - | | `[nzSize]` | 输入框大小,可选 `large` `default` `small` | `'large' \| 'small' \| 'default'` | `'default'` | | `[nzStep]` | 每次改变步数,可以是小数 | `number` | `1` | | `[nzAddonBefore]` | 带标签的 input-number,设置前置标签 | `string` | - | | `[nzAddonAfter]` | 带标签的 input-number,设置后置标签 | `string` | - | | `[nzPrefix]` | 带有前缀图标的 input-number | `string` | - | | `[nzSuffix]` | 带有后缀图标的 input-number | `string` | - | | `(nzOnStep)` | 点击上下箭头的回调 | `EventEmitter` | - | | `(nzFocus)` | focus 时回调 | `OutputRef` | - | | `(nzBlur)` | blur 时回调 | `OutputRef` | - | | `(ngModelChange)` | 值变化时的回调函数 | `EventEmitter` | - | #### NzInputNumberStepEvent ```ts export type NzInputNumberStepEmitter = 'wheel' | 'handler' | 'keyboard'; export interface NzInputNumberStepEvent { value: number; offset: number; type: 'up' | 'down'; emitter: NzInputNumberStepEmitter; } ``` #### 方法 通过 `ViewChild` 等方法获得实例后调用 | 名称 | 描述 | 参数 | | -------------- | -------- | ---------------------------------------------------------------------------- | | focus(option?) | 获取焦点 | `(option?: { preventScroll?: boolean, cursor?: 'start' \| 'end' \| 'all' })` | | blur() | 移除焦点 | - | ## FAQ ### 为何受控模式下,`value` 可以超出 `min` 和 `max` 范围? 在受控模式下,开发者可能自行存储相关数据。如果组件将数据约束回范围内,会导致展示数据与实际存储数据不一致的情况。这使得一些如表单场景存在潜在的数据问题。 --- --- category: Components subtitle: 文字提示 type: 数据展示 title: Tooltip cover: 'https://gw.alipayobjects.com/zos/alicdn/Vyyeu8jq2/Tooltp.svg' description: 简单的文字提示气泡框。 --- ## 何时使用 鼠标移入则显示提示,移出消失,气泡浮层不承载复杂文本和操作。 可用来代替系统默认的 `title` 提示,提供一个`按钮/文字/操作`的文案解释。 ## API ### [nz-tooltip] | 参数 | 说明 | 类型 | 默认值 | | ------------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | | `[nzTooltipArrowPointAtCenter]` | 箭头指向锚点的中心 | `boolean` | `false` | | `[nzTooltipTitle]` | 提示文字 | `string \| TemplateRef` | - | | `[nzTooltipTitleContext]` | 提示文字模板上下文 | `object` | - | | `[nzTooltipTrigger]` | 触发行为,可选 `'click' \| 'focus' \| 'hover'`,为 `null` 时不响应光标事件 | `'click' \| 'focus' \| 'hover' \| null` | `'hover'` | | `[nzTooltipPlacement]` | 气泡框位置 | `'top' \| 'left' \| 'right' \| 'bottom' \| 'topLeft' \| 'topRight' \| 'bottomLeft' \| 'bottomRight' \| 'leftTop' \| 'leftBottom' \| 'rightTop' \| 'rightBottom' \| Array` | `'top'` | | `[nzTooltipColor]` | 背景颜色 | `string` | - | | `[nzTooltipOrigin]` | 气泡框定位元素 | `ElementRef` | - | | `[nzTooltipVisible]` | 显示隐藏气泡框 | `boolean` | `false` | | `(nzTooltipVisibleChange)` | 显示隐藏的事件 | `EventEmitter` | - | | `[nzTooltipMouseEnterDelay]` | 鼠标移入后延时多少才显示 Tooltip,单位:秒 | `number` | `0.15` | | `[nzTooltipMouseLeaveDelay]` | 鼠标移出后延时多少才隐藏 Tooltip,单位:秒 | `number` | `0.1` | | `[nzTooltipOverlayClassName]` | 卡片类名 | `string` | - | | `[nzTooltipOverlayStyle]` | 卡片样式 | `object` | - | ### 共同的 API 以下 API 为 `nz-tooltip`、`nz-popconfirm`、`nz-popover` 共享的 API。 | 方法 | 说明 | | ------------------ | -------- | | `show()` | 打开 | | `hide()` | 隐藏 | | `updatePosition()` | 调整位置 | ## 注意 请确保 `[nz-tooltip]` 元素能接受 `onMouseEnter`、`onMouseLeave`、`onFocus`、`onClick` 事件。 ## FAQ ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components type: 数据展示 subtitle: 日历 cols: 1 title: Calendar cover: 'https://gw.alipayobjects.com/zos/antfincdn/dPQmLq08DI/Calendar.svg' description: 按照日历形式展示数据的容器。 --- ## 何时使用 当数据是日期或按照日期划分时,例如日程、课表、价格日历等,农历等。目前支持年/月切换。 ## API **注意:**Calendar 的部分 locale 来自于 Angular 自身的国际化支持,需要在 `app.config.ts` 文件中 引入相应的 Angular 语言包。 例如: ```typescript import { registerLocaleData } from '@angular/common'; import zh from '@angular/common/locales/zh'; registerLocaleData(zh); ``` ```html
      Foo
      {{ date | date:'d'}} ``` ### nz-calendar | 参数 | 说明 | 类型 | 默认值 | | ------------------- | ------------------------------------------------------------ | ------------------------------------------------------- | --------- | | `[(ngModel)]` | (可双向绑定)展示日期 | `Date` | 当前日期 | | `[(nzMode)]` | (可双向绑定)显示模式 | `'month' \| 'year'` | `'month'` | | `[nzFullscreen]` | 是否全屏显示 | `boolean` | `true` | | `[nzDateCell]` | (可作为内容)自定义渲染日期单元格,模版内容会被追加到单元格 | `TemplateRef` | - | | `[nzDateFullCell]` | (可作为内容)自定义渲染日期单元格,模版内容覆盖单元格 | `TemplateRef` | - | | `[nzMonthCell]` | (可作为内容)自定义渲染月单元格,模版内容会被追加到单元格 | `TemplateRef` | - | | `[nzMonthFullCell]` | (可作为内容)自定义渲染月单元格,模版内容覆盖单元格 | `TemplateRef` | - | | `[nzCustomHeader]` | 自定义头部内容 | `string \| TemplateRef` | - | | `[nzDisabledDate]` | 不可选择的日期 | `(current: Date) => boolean` | - | | `(nzPanelChange)` | 面板变化的回调 | `EventEmitter<{ date: Date, mode: 'month' \| 'year' }>` | - | | `(nzSelectChange)` | 选择日期的回调 | `EventEmitter` | - | --- --- category: Components type: 数据录入 title: DatePicker subtitle: 日期选择框 cover: 'https://gw.alipayobjects.com/zos/alicdn/RT_USzA48/DatePicker.svg' description: 输入或选择日期的控件。 --- ## 何时使用 当用户需要输入一个日期,可以点击标准输入框,弹出日期面板进行选择。 ## API **注意:** nz-date-picker 的部分 locale 来自于 Angular 自身的[国际化支持](https://angular.cn/guide/i18n) ,需要在 `app.config.ts` 文件中 引入相应的 Angular 语言包。 例如: ```typescript import { registerLocaleData } from '@angular/common'; import zh from '@angular/common/locales/zh'; registerLocaleData(zh); ``` **注意:** 所有输入输出日期对象均为 [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) ,你可以通过 [date-fns](https://date-fns.org/) 工具库获得你需要的数据。 ### 共同的 API 以下 API 为 nz-date-picker、nz-range-picker 共享的 API。 | 参数 | 说明 | 类型 | 默认值 | 全局配置 | 版本 | | ------------------------ | ------------------------------------------------------------- | ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -------- | ------ | | `[nzId]` | 组件内部 input 的 id 值 | `string` | - | | `[nzAllowClear]` | 是否显示清除按钮 | `boolean` | `true` | - | | `[nzAutoFocus]` | 自动获取焦点 | `boolean` | `false` | - | | `[nzBackdrop]` | 浮层是否应带有背景板 | `boolean` | `false` | | `[nzDefaultPickerValue]` | 默认面板日期 | `Date \| Date[]` | - | - | | `[nzDisabled]` | 禁用 | `boolean` | `false` | - | | `[nzDisabledDate]` | 不可选择的日期 | `(current: Date) => boolean` | - | - | | `[nzDropdownClassName]` | 额外的弹出日历 className | `string` | - | - | | `[nzFormat]` | 展示的日期格式,见`nzFormat特别说明` | `string` | - | | `[nzInputReadOnly]` | 为 input 标签设置只读属性(避免在移动设备上触发小键盘) | `boolean` | `false` | - | | `[nzLocale]` | 国际化配置 | `object` | [默认配置](https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json) | - | | `[nzMode]` | 选择模式 | `'date' \| 'week' \| 'month' \| 'quarter' \| 'year'` | `'date'` | | `[nzPlaceHolder]` | 输入框提示文字 | `string \| string[]` | - | - | | `[nzPopupStyle]` | 额外的弹出日历样式 | `object` | `{}` | - | | `[nzRenderExtraFooter]` | 在面板中添加额外的页脚 | `TemplateRef \| string \| (() => TemplateRef \| string)` | - | | `[nzSize]` | 输入框大小,`large` 高度为 40px,`small` 为 24px,默认是 32px | `'large' \| 'small'` | - | - | | `[nzStatus]` | 设置校验状态 | `'error' \| 'warning'` | - | | `[nzPlacement]` | 选择框弹出的位置 | `'bottomLeft' \| 'bottomRight' \| 'topLeft' \| 'topRight'` | `'bottomLeft'` | | | `[nzSuffixIcon]` | 自定义的后缀图标 | `string \| TemplateRef` | - | ✅ | | `[nzVariant]` | 形态变体 | `'outlined' \| 'borderless' \| 'filled' \| 'underlined'` | `'outlined'` | ✅ | 20.0.0 | | `[nzInline]` | 内联模式 | `boolean` | `false` | - | | `(nzOnOpenChange)` | 弹出日历和关闭日历的回调 | `EventEmitter` | - | - | | `(nzOnPanelChange)` | 改变模式或日期的回调 | `EventEmitter` | - | - | ### 共同的方法 | 名称 | 描述 | | --------- | ------------ | | `open()` | 打开日历弹层 | | `close()` | 关闭日历弹层 | ### nz-date-picker | 参数 | 说明 | 类型 | 默认值 | | ------------- | ---- | ------ | ------ | | `[(ngModel)]` | 日期 | `Date` | - | ### nz-date-picker[nzMode="date"] | 参数 | 说明 | 类型 | 默认值 | | -------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------ | ---------------------------------------------------- | | `[nzDateRender]` | 自定义日期单元格的内容(month-picker/year-picker 不支持) | `TemplateRef \| string \| ((d: Date) => TemplateRef \| string)` | - | | `[nzDisabledTime]` | 不可选择的时间 | `(current: Date) => { nzDisabledHours, nzDisabledMinutes, nzDisabledSeconds }` | - | | `[nzShowTime]` | 增加时间选择功能 | `object \| boolean` | [TimePicker Options](/components/time-picker/zh#api) | | `[nzShowToday]` | 是否展示“今天”按钮 | `boolean` | `true` | | `[nzShowNow]` | 当设定了`nzShowTime`的时候,面板是否显示“此刻”按钮 | `boolean` | `true` | | `[nzShowWeekNumber]` | 是否在每一行显示周数(仅日期选择器支持。周选择器始终显示周数) | `boolean` | `false` | | `(nzOnOk)` | 点击确定按钮的回调 | `EventEmitter` | - | ### nz-range-picker | 参数 | 说明 | 类型 | 默认值 | | ---------------------- | ---------------------- | ------------------------------------------------------------------ | ------ | | `[(ngModel)]` | 日期 | `Date[]` | - | | `[nzRanges]` | 预设时间范围快捷选择 | `{ [ key: string ]: Date[] } \| { [ key: string ]: () => Date[] }` | - | | `[nzSeparator]` | 分隔符 | `string \| TemplateRef` | `'~'` | | `(nzOnCalendarChange)` | 待选日期发生变化的回调 | `EventEmitter` | - | ### nz-range-picker[nzMode="date"] | 参数 | 说明 | 类型 | 默认值 | | -------------------- | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | `[nzShowTime]` | 增加时间选择功能 | `object \| boolean` | [TimePicker Options](/components/time-picker/zh#api) | | `[nzDisabledTime]` | 不可选择的时间 | `(current: Date, partial: 'start' \| 'end') => { nzDisabledHours, nzDisabledMinutes, nzDisabledSeconds }` | - | | `[nzShowWeekNumber]` | 是否在每一行显示周数(仅日期选择器支持。周选择器始终显示周数) | `boolean` | `false` | | `(nzOnOk)` | 点击确定按钮的回调 | `EventEmitter` | - | > `nzShowTime` 中当前支持的 `nz-time-picker` > 参数有:`nzFormat`, `nzHourStep`, `nzMinuteStep`, `nzSecondStep`, `nzDisabledHours`, `nzDisabledMinutes`, `nzDisabledSeconds`, `nzHideDisabledOptions`, `nzDefaultOpenValue`, `nzAddOn` ## FAQ ### 为何在设置 `nzFormat="dd/MM/yyyy"` 后手动输入不生效 需要引入 `date-fns` 。日期格式化目前同时支持两种方式:`DatePipe`(默认,[语法参考](https://angular.cn/api/common/DatePipe)) 和 `date-fns`(见[如何使用 `date-fns` 进行日期格式化](/docs/i18n/zh#如何使用Date-fns进行日期格式化))。当你引入 `date-fns` 后,NG-ZORRO 会使用它提供的 API 来进行反序列化。 ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components subtitle: 时间轴 type: 数据展示 title: Timeline cover: 'https://gw.alipayobjects.com/zos/antfincdn/vJmo00mmgR/Timeline.svg' description: 垂直展示的时间流信息。 --- ## 何时使用 - 当有一系列信息需按时间排列时,可正序和倒序。 - 需要有一条时间轴进行视觉上的串联时。 ## API ```html 创建服务现场 2015-09-01 初步排除网络异常 2015-09-01 技术测试异常 2015-09-01 网络异常正在修复 2015-09-01 ``` ### nz-timeline 时间轴。 | 参数 | 说明 | 类型 | 默认值 | | ---------------- | ---------------------------------------- | ---------------------------------------------- | ------------------------------ | | `[nzPending]` | 指定最后一个幽灵节点是否存在或内容 | `string \| boolean \| TemplateRef` | `false` | | `[nzPendingDot]` | 当最后一个幽灵节点存在時,指定其时间图点 | `string \| TemplateRef` | `` | | `[nzReverse]` | 节点排序 | `boolean` | `false` | | `[nzMode]` | 可以改变时间轴和内容的相对位置 | `'left' \| 'alternate' \| 'right' \| 'custom'` | - | ### nz-timeline-item 时间轴的每一个节点。 | 参数 | 说明 | 类型 | 默认值 | | -------------- | ------------------------------------------------------------------ | ----------------------------- | -------- | | `[nzColor]` | 指定圆圈颜色 `'blue' \| 'red' \| 'green' \| 'gray'` 或自定义的色值 | `string` | `'blue'` | | `[nzDot]` | 自定义时间轴点 | `string \| TemplateRef` | - | | `[nzPosition]` | 自定义节点位置,仅当 `nzMode` 为 `custom` 时有效 | `'left' \| 'right'` | - | | `[nzLabel]` | 设置标签 | `string \| TemplateRef` | - | --- --- category: Components subtitle: 时间选择框 type: 数据录入 title: TimePicker cover: 'https://gw.alipayobjects.com/zos/alicdn/h04Zsl98I/TimePicker.svg' description: 输入或选择时间的控件。 --- ## 何时使用 当用户需要输入一个时间,可以点击标准输入框,弹出时间面板进行选择。 ## API ### nz-time-picker | 参数 | 说明 | 类型 | 默认值 | 全局配置 | 版本 | | ------------------------- | ------------------------------------------------------- | ---------------------------------------------------------- | -------------- | -------- | ------ | | `[nzId]` | 组件内部 input 的 id 值 | `string` | - | | `[ngModel]` | 当前时间 | `Date` | - | | `[nzAddOn]` | 选择框底部显示自定义的内容 | `TemplateRef` | - | | `[nzAllowEmpty]` | 是否展示清除按钮 | `boolean` | `true` | ✅ | | `[nzAutoFocus]` | 自动获取焦点 | `boolean` | `false` | | `[nzBackdrop]` | 浮层是否应带有背景板 | `boolean` | `false` | | `[nzClearText]` | 清除按钮的提示文案 | `string` | `'clear'` | ✅ | | `[nzNowText]` | 此刻按钮文本 | `string` | `'此刻'` | ✅ | | `[nzOkText]` | 确认按钮文本 | `string` | `'确定'` | ✅ | | `[nzDefaultOpenValue]` | 当 `[ngModel]` 不存在时,可以设置面板打开时默认选中的值 | `Date` | `new Date()` | | `[nzDisabled]` | 禁用全部操作 | `boolean` | `false` | | `[nzDisabledHours]` | 禁止选择部分小时选项 | `() => number[]` | - | | `[nzDisabledMinutes]` | 禁止选择部分分钟选项 | `(hour: number) => number[]` | - | | `[nzDisabledSeconds]` | 禁止选择部分秒选项 | `(hour: number, minute: number) => number[]` | - | | `[nzFormat]` | 展示的时间格式 | [DatePipe](https://angular.cn/api/common/DatePipe) | `'HH:mm:ss'` | ✅ | | `[nzHideDisabledOptions]` | 隐藏禁止选择的选项 | `boolean` | `false` | | `[nzHourStep]` | 小时选项间隔 | `number` | `1` | ✅ | | `[nzMinuteStep]` | 分钟选项间隔 | `number` | `1` | ✅ | | `[nzSecondStep]` | 秒选项间隔 | `number` | `1` | ✅ | | `[nzSize]` | 时间选择框大小 | `'large' \| 'small' \| 'default'` | `'default'` | | `[nzStatus]` | 设置校验状态 | `'error' \| 'warning'` | - | | `[nzVariant]` | 形态变体 | `'outlined' \| 'borderless' \| 'filled' \| 'underlined'` | `'outlined'` | ✅ | 20.0.0 | | `[nzInputReadOnly]` | 为 input 标签设置只读属性(避免在移动设备上触发小键盘) | `boolean` | `false` | - | | `[nzOpen]` | 面板是否打开,可双向绑定 | `boolean` | `false` | | `[nzPlaceHolder]` | 没有值的时候显示的内容 | `string` | `'请选择时间'` | | `[nzPopupClassName]` | 弹出层类名 | `string` | `''` | ✅ | | `[nzUse12Hours]` | 使用 12 小时制,为 true 时 format 默认为`h:mm:ss a` | `boolean` | `false` | ✅ | | `[nzSuffixIcon]` | 自定义的后缀图标 | `string \| TemplateRef` | - | ✅ | | `[nzPrefix]` | 自定义前缀 | `string \| TemplateRef` | - | | 21.1.0 | | `[nzNeedConfirm]` | 是否需要确认按钮,为 false 时失去焦点即代表选择 | `boolean` | - | | 21.1.0 | | `[nzPlacement]` | 选择框弹出的位置 | `'bottomLeft' \| 'bottomRight' \| 'topLeft' \| 'topRight'` | - | | 21.1.0 | | `(ngModelChange)` | 时间发生变化的回调 | `EventEmitter` | - | | `(nzOpenChange)` | 面板打开/关闭时的回调 | `EventEmitter` | - | #### 方法 | 名称 | 描述 | | --------- | -------- | | `blur()` | 移除焦点 | | `focus()` | 获取焦点 | ## FAQ ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components subtitle: 栅格 type: 布局 cols: 1 title: Grid cover: 'https://gw.alipayobjects.com/zos/alicdn/5rWLU27so/Grid.svg' description: 24 栅格系统。 --- ## 设计理念
      100%
      25%
      25%
      25%
      25%
      33.33%
      33.33%
      33.33%
      50%
      50%
      66.66%
      33.33%
      在多数业务情况下,Ant Design 需要在设计区域内解决大量信息收纳的问题,因此在 12 栅格系统的基础上,我们将整个设计建议区域按照 24 等分的原则进行划分。 划分之后的信息区块我们称之为『盒子』。建议横向排列的盒子数量最多四个,最少一个。『盒子』在整个屏幕上占比见上图。设计部分基于盒子的单位定制盒子内部的排版规则,以保证视觉层面的舒适感。 ## 概述 布局的栅格化系统,我们是基于行(row)和列(col)来定义信息区块的外部框架,以保证页面的每个区域能够稳健地排布起来。下面简单介绍一下它的工作原理: - 通过 `row` 在水平方向建立一组 `column`(简写 col) - 你的内容应当放置于 `col` 内,并且,只有 `col` 可以作为 `row` 的直接元素 - 栅格系统中的列是指 1 到 24 的值来表示其跨越的范围。例如,三个等宽的列可以使用 `
      ` 来创建 - 如果一个 `row` 中的 `col` 总和超过 24,那么多余的 `col` 会作为一个整体另起一行排列 我们的栅格化系统基于 Flex 布局,允许子元素在父节点内的水平对齐方式 - 居左、居中、居右、等宽排列、分散排列。子元素与子元素之间,支持顶部对齐、垂直居中对齐、底部对齐的方式。同时,支持使用 order 来定义元素的排列顺序。 布局是基于 24 栅格来定义每一个『盒子』的宽度,但不拘泥于栅格。 ## API ### [nz-row] | 成员 | 说明 | 类型 | 默认值 | | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------- | ------ | | `[nzAlign]` | 垂直对齐方式 | `'top' \| 'middle' \| 'bottom'` | - | | `[nzGutter]` | 栅格间隔,可以写成像素值或支持响应式的对象写法来设置水平间隔 `{ xs: 8, sm: 16, md: 24}`。或者使用数组形式同时设置 `[水平间距, 垂直间距]`。 | `string \| number \| object \| [number, number] \| [object, object]` | - | | `[nzJustify]` | 水平排列方式 | `'start' \| 'end' \| 'center' \| 'space-around' \| 'space-between'` | - | ### [nz-col] | 成员 | 说明 | 类型 | 默认值 | | ------------ | -------------------------------------------------------- | ------------------ | ------ | | `[nzFlex]` | flex 布局属性 | `string \| number` | - | | `[nzOffset]` | 栅格左侧的间隔格数,间隔内不可以有栅格 | `number` | - | | `[nzOrder]` | 栅格顺序 | `number` | - | | `[nzPull]` | 栅格向左移动格数 | `number` | - | | `[nzPush]` | 栅格向右移动格数 | `number` | - | | `[nzSpan]` | 栅格占位格数,为 0 时相当于 `display: none` | `number` | - | | `[nzXs]` | `<576px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | `number \| object` | - | | `[nzSm]` | `≥576px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | `number \| object` | - | | `[nzMd]` | `≥768px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | `number \| object` | - | | `[nzLg]` | `≥992px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | `number \| object` | - | | `[nzXl]` | `≥1200px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | `number \| object` | - | | `[nzXXl]` | `≥1600px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | `number \| object` | - | 响应式栅格的断点扩展自 [BootStrap 4 的规则](https://getbootstrap.com/docs/4.0/layout/overview/#responsive-breakpoints)(不包含链接里 `occasionally` 的部分)。 --- --- category: Components subtitle: 标签 type: 数据展示 title: Tag cover: 'https://gw.alipayobjects.com/zos/alicdn/cH1BOLfxC/Tag.svg' description: 进行标记和分类的小标签。 --- ## 何时使用 - 用于标记事物的属性和维度。 - 进行分类。 ## API ### nz-tag | 参数 | 说明 | 类型 | 默认值 | | ------------------- | -------------------------------------------------------------- | ----------------------------------------- | ----------- | | `[nzMode]` | 设定标签工作的模式 | `'closeable' \| 'default' \| 'checkable'` | `'default'` | | `[nzChecked]` | 设置标签的选中状态,可双向绑定,在 `nzMode="checkable"` 时可用 | `boolean` | `false` | | `[nzColor]` | 标签色 | `string` | - | | `[nzBordered]` | 是否有边框 | `boolean` | `true` | | `(nzOnClose)` | 关闭时的回调,在 `nzMode="closable"` 时可用 | `EventEmitter` | - | | `(nzCheckedChange)` | 设置标签的选中状态的回调,在 `nzMode="checkable"` 时可用 | `EventEmitter` | - | --- --- category: Components subtitle: 标签页 type: 导航 title: Tabs cols: 1 cover: 'https://gw.alipayobjects.com/zos/antfincdn/lkI2hNEDr2V/Tabs.svg' description: 选项卡切换组件。 --- ## 何时使用 提供平级的区域将大块内容进行收纳和展现,保持界面整洁。 Ant Design 依次提供了三级选项卡,分别用于不同的场景。 - 卡片式的页签,提供可关闭的样式,常用于容器顶部。 - 标准线条式页签,用于容器内部的主功能切换,这是最常用的 Tabs。 - [RadioButton](/components/radio/zh/#components-radio-demo-radiobutton) 可作为更次级的页签来使用。 ## API ### nz-tabs | 参数 | 说明 | 类型 | 默认值 | 全局配置 | 版本 | | ---------------------------- | ------------------------------------------------------------------ | --------------------------------------------------- | ------------------------------------- | -------- | ------ | | `[nzSelectedIndex]` | 当前激活 tab 面板的 序列号,可双向绑定 | `number` | - | | `[nzAnimated]` | 是否使用动画切换 Tabs,在 `nzTabPosition="top" \| "bottom"` 时有效 | `boolean \| {inkBar:boolean, tabPane:boolean}` | `true`, 当 `type="card"` 时为 `false` | ✅ | | `[nzSize]` | 大小,提供 `large` `default` 和 `small` 三种大小 | `'large' \| 'small' \| 'default'` | `'default'` | ✅ | | `[nzTabBarExtraContent]` | tab bar 上额外的元素 | `TemplateRef` | - | | `[nzTabBarStyle]` | tab bar 的样式对象 | `object` | - | | `[nzTabPosition]` | 页签位置,可选值有 `top` `right` `bottom` `left` | `'top' \| 'right' \| 'bottom' \| 'left'` | `'top'` | | | `[nzType]` | 页签的基本样式 | `'line' \| 'card' \| 'editable-card'` | `'line'` | ✅ | | `[nzTabBarGutter]` | tabs 之间的间隙 | `number` | - | ✅ | | `[nzHideAll]` | 是否隐藏所有 tab 内容 | `boolean` | `false` | | `[nzLinkRouter]` | 与 Angular 路由联动 | `boolean` | `false` | | | `[nzLinkExact]` | 以严格匹配模式确定联动的路由 | `boolean` | `true` | | `[nzCanDeactivate]` | 决定一个 tab 是否可以被切换 | `NzTabsCanDeactivateFn` | - | | `[nzCentered]` | 标签居中展示 | `boolean` | `false` | | `[nzDestroyInactiveTabPane]` | 被隐藏时是否销毁 DOM 结构 | `boolean` | `false` | | `[nzIndicator]` | 自定义指示条宽度和对齐方式 | `NzIndicator` | - | | 21.2.0 | | `(nzSelectedIndexChange)` | 当前激活 tab 面板的 序列号变更回调函数 | `EventEmitter` | - | | `(nzSelectChange)` | 当前激活 tab 面板变更回调函数 | `EventEmitter<{index: number,tab: NzTabComponent}>` | - | ### nz-tabs[nzType="editable-card"] | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | ------------- | -------------------- | --------------------------------- | ------- | -------- | | `[nzHideAdd]` | 隐藏添加按钮 | `boolean` | `false` | | `[nzAddIcon]` | 添加按钮图标 | `string \| TemplateRef` | - | | `(nzAdd)` | 点击添加按钮时的事件 | `EventEmitter<>` | - | | `(nzClose)` | 点击删除按钮时的事件 | `EventEmitter<{ index: number }>` | - | ### nz-tab | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ------------------------- | ------------------------------------------- | ------- | | `[nzTitle]` | 选项卡头显示文字 | `string \| TemplateRef` | - | | `[nzForceRender]` | 被隐藏时是否渲染 DOM 结构 | `boolean` | `false` | | `[nzDisabled]` | 是否禁用 | `boolean` | - | | `(nzClick)` | 单击 title 的回调函数 | `EventEmitter` | - | | `(nzContextmenu)` | 右键 title 的回调函数 | `EventEmitter` | - | | `(nzSelect)` | tab 被选中的回调函数 | `EventEmitter` | - | | `(nzDeselect)` | tab 被取消选中的回调函数 | `EventEmitter` | - | ### nz-tabs[nzType="editable-card"] > nz-tab | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | --------------- | ------------ | ----------------------------- | ------- | -------- | | `[nzClosable]` | 显示删除按钮 | `boolean` | `false` | | `[nzCloseIcon]` | 关闭按钮图标 | `string \| TemplateRef` | - | #### `nz-tab[nzTitle]` 的模版引用变量 | 属性 | 说明 | 类型 | | --------- | ------------------------------------------------------- | --------- | | `visible` | 表示是否在可见区域, 为 `false` 时将会被渲染到下拉菜单中 | `boolean` | 在 `nz-tab[nzTitle]` 中使用 ```html ... ... ``` 在 `*nzTabLink` 中使用 ```html ... ``` ### [nz-tab] 与 `ng-template` 一同使用,用于标记需要懒加载的 `tab` 内容,具体用法见示例。 ### ng-template[nzTabLink] > a[nz-tab-link] 路由联动可以让 tab 的切换和路由行为相一致。 ```html Link Default. ``` ### [nzTabBarExtraContent] > 注意:`*nzTabBarExtraContent` 比 `nz-tabs[nzTabBarExtraContent]` 具有更高的优先级。 | 参数 | 说明 | 类型 | 默认值 | | ------------------------ | -------------- | ------------------ | ------- | | `[nzTabBarExtraContent]` | 附加内容的位置 | `'start' \| 'end'` | `'end'` | --- --- category: Components type: 数据展示 title: Tree subtitle: 树形控件 cover: 'https://gw.alipayobjects.com/zos/alicdn/Xh-oWqg9k/Tree.svg' description: 多层次的结构列表。 --- ## 何时使用 文件夹、组织架构、生物分类、国家地区等等,世间万物的大多数结构都是树形结构。使用`树控件`可以完整展现其中的层级关系,并具有展开收起选择等交互功能。 ## API ### nz-tree > 说明: 根据目前的数据结构设计,需要保证优先设置 `nzData`,否则各属性不会生效。异步操作待数据返回后,重新赋值其他各属性触发渲染(`nzExpandAll` `nzExpandedKeys` `nzCheckedKeys` `nzSelectedKeys` `nzSearchValue`)。重构优化工作请追踪 [#5152](https://github.com/NG-ZORRO/ng-zorro-antd/issues/5152)。 | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | ------------------------ | -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------- | -------- | | `[nzData]` | 元数据 | `NzTreeNodeOptions[] \| NzTreeNode[]` | `[]` | | `[nzBlockNode]` | 是否节点占据一行 | `boolean` | `false` | ✅ | | `[nzCheckable]` | 节点前添加 checkbox 复选框 | `boolean` | `false` | | `[nzShowExpand]` | 节点前添加展开图标 | `boolean` | `true` | | | `[nzShowLine]` | 是否展示连接线 | `boolean` | `false` | | | `[nzExpandedIcon]` | 自定义展开图标 | `TemplateRef<{ $implicit: NzTreeNode }>` | - | | `[nzShowIcon]` | 是否展示 TreeNode title 前的图标,没有默认样式 | `boolean` | `false` | ✅ | | `[nzAsyncData]` | 是否异步加载(显示加载状态) | `boolean` | `false` | | `[nzDraggable]` | 设置节点可拖拽 | `boolean` | `false` | | `[nzMultiple]` | 支持点选多个节点(节点本身) | `boolean` | `false` | | `[nzHideUnMatched]` | 搜索隐藏未匹配的节点 | `boolean` | `false` | ✅ | | `[nzCheckStrictly]` | checkable 状态下节点选择完全受控(父子节点选中状态不再关联) | `boolean` | `false` | | `[nzTreeTemplate]` | 自定义节点 | `TemplateRef<{ $implicit: NzTreeNode }>` | - | | `[nzExpandAll]` | 默认展开所有树节点 | `boolean` | `false` | | `[nzExpandedKeys]` | 展开指定的树节点 | `string[]` | `[]` | | `[nzCheckedKeys]` | 指定选中复选框的树节点 | `string[]` | `[]` | | `[nzSelectedKeys]` | 指定选中的树节点 | `string[]` | `[]` | | `[nzSearchValue]` | 按需筛选树高亮节点(参考可搜索的树),双向绑定 | `string` | `null` | | `[nzSearchFunc]` | 自定义匹配方法,配合 `nzSearchValue` 使用 | `(node: NzTreeNodeOptions) => boolean` | `null` | | `[nzBeforeDrop]` | drop 前二次校验,允许用户自行决定是否允许放置 | `(confirm: NzFormatBeforeDropEvent) => Observable` | - | | `[nzVirtualHeight]` | 虚拟滚动的总高度 | `string` | `-` | | `[nzVirtualItemSize]` | 虚拟滚动时每一列的高度,与 [cdk itemSize](https://material.angular.io/cdk/scrolling/api) 相同 | `number` | `28` | | `[nzVirtualMaxBufferPx]` | 缓冲区最大像素高度,与 [cdk maxBufferPx](https://material.angular.io/cdk/scrolling/api) 相同 | `number` | `500` | | `[nzVirtualMinBufferPx]` | 缓冲区最小像素高度,低于该值时将加载新结构,与 [cdk minBufferPx](https://material.angular.io/cdk/scrolling/api) 相同 | `number` | `28` | | `(nzClick)` | 点击树节点触发 | `EventEmitter` | - | | `(nzDblClick)` | 双击树节点触发 | `EventEmitter` | - | | `(nzContextMenu)` | 右键树节点触发 | `EventEmitter` | - | | `(nzCheckboxChange)` | 点击树节点 checkbox 触发 | `EventEmitter` | - | | `(nzExpandChange)` | 点击展开树节点图标触发 | `EventEmitter` | - | | `(nzSearchValueChange)` | 搜索节点时调用(`nzSearchValue` 配合使用) | `EventEmitter` | - | | `(nzOnDragStart)` | 开始拖拽时调用 | `EventEmitter` | - | | `(nzOnDragEnter)` | dragenter 触发时调用 | `EventEmitter` | - | | `(nzOnDragOver)` | dragover 触发时调用 | `EventEmitter` | - | | `(nzOnDragLeave)` | dragleave 触发时调用 | `EventEmitter` | - | | `(nzOnDrop)` | drop 触发时调用 | `EventEmitter` | - | | `(nzOnDragEnd)` | dragend 触发时调用 | `EventEmitter` | - | #### 方法 | 方法名 | 说明 | 返回值 | | ------------------------ | ---------------------------------- | -------------- | | `getTreeNodes` | 获取组件 NzTreeNode 节点 | `NzTreeNode[]` | | `getTreeNodeByKey` | 按 key 获取 NzTreeNode 节点 | `NzTreeNode` | | `getCheckedNodeList` | 获取组件 checkbox 被点击选中的节点 | `NzTreeNode[]` | | `getSelectedNodeList` | 获取组件被选中的节点 | `NzTreeNode[]` | | `getHalfCheckedNodeList` | 获取组件半选状态节点 | `NzTreeNode[]` | | `getExpandedNodeList` | 获取组件展开状态节点 | `NzTreeNode[]` | | `getMatchedNodeList` | 获取组搜索匹配到的节点 | `NzTreeNode[]` | #### NzTreeNodeOptions props | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ------------------------------------------------- | --------------------- | ------- | | `title` | 标题 | `string` | - | | `key` | 整个树范围内的所有节点的 key 值不能重复且不为空! | `string` | - | | `icon` | 节点前的图标,与 `nzShowIcon` 组合使用 | `string` | - | | `children` | 子节点 | `NzTreeNodeOptions[]` | - | | `isLeaf` | 设置为叶子节点(叶子节点不可被拖拽模式放置) | `boolean` | `false` | | `checked` | 设置节点 checkbox 是否选中 | `boolean` | `false` | | `selected` | 设置节点本身是否选中 | `boolean` | `false` | | `expanded` | 设置节点是否展开(叶子节点无效) | `boolean` | `false` | | `selectable` | 设置节点是否可被选中 | `boolean` | `true` | | `disabled` | 设置是否禁用节点(不可进行任何操作) | `boolean` | `false` | | `disableCheckbox` | 设置节点禁用 checkbox | `boolean` | `false` | | `[key: string]` | 自定义数据,可通过 NzTreeNode 的 origin 字段获取 | `any ` | - | #### NzFormatEmitEvent props | 属性 | 说明 | 类型 | 默认值 | | --------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | | `eventName` | 事件名 | enum: `'click' \| 'dblclick' \| 'contextmenu' \| 'check' \| 'expand' \| 'search' \| 'dragstart' \| 'dragenter' \| 'dragover' \| 'dragleave' \| 'drop' \| 'dragend'` | - | | `node` | 当前操作节点(拖拽时表示目标节点) | `NzTreeNode` | `null` | | `event` | 原生事件 | `'MouseEvent' \| 'DragEvent'` | `null` | | `dragNode?` | 当前拖拽节点(拖拽时存在) | `NzTreeNode` | `null` | | `selectedKeys?` | 已选中的节点 key(单击时存在) | `NzTreeNode[]` | `[]` | | `checkedKeys?` | checkbox 已选中的节点 key(点击 checkbox 存在) | `NzTreeNode[]` | `[]` | | `matchedKeys?` | 搜索时匹配到的节点 key | `NzTreeNode[]` | `[]` | | `keys?` | 非拖拽事件相关的全部节点的 key 数组 | `string[]` | `[]` | | `nodes?` | 非拖拽事件相关的全部节点 | `NzTreeNode[]` | `[]` | #### NzFormatBeforeDropEvent props | 属性 | 说明 | 类型 | 默认值 | | -------- | ----------------------------------------------------------- | ------------ | ------ | | dragNode | 当前拖拽节点(拖拽时存在) | `NzTreeNode` | - | | node | 当前操作节点(拖拽时表示目标节点) | `NzTreeNode` | - | | pos | 放置位置(-1:目标节点前面, 0: 目标节点内部, 1: 目标节点后面) | `number` | - | #### NzTreeNode props | 属性 | 说明 | 类型 | 默认值 | | ------------------- | --------------------------------------------------------------------------------------------- | ---------------------------------------- | ------------------------- | | `title` | 标题 | `string` | `NzTreeNodeOptions.title` | | `key` | key 值 | `string` | `NzTreeNodeOptions.key` | | `level` | 层级(最顶层为 0,子节点逐层加 1) | `number` | `number` | | `children` | 子节点 | `NzTreeNode[]` | `[]` | | `origin` | 原始节点树结构(用户提供,用于展示额外信息) | `NzTreeNodeOptions` | - | | `getParentNode` | 获取父节点 | `function` | `null` | | `isLeaf` | 是否为叶子节点 | `boolean` | `false` | | `isExpanded` | 是否已展开 | `boolean` | `false` | | `isDisabled` | 是否禁用 | `boolean` | `false` | | `isDisableCheckbox` | 是否禁用 checkbox | `boolean` | `false` | | `isSelectable` | 是否可选中 | `boolean` | `true` | | `isChecked` | 是否选中 checkbox | `boolean` | `false` | | `isHalfChecked` | 子节点有选中但未全选 | `boolean` | `false` | | `isSelected` | 是否已选中 | `boolean` | `false` | | `isLoading` | 是否异步加载状态(影响展开图标展示) | `boolean` | `false` | | `isMatched` | title 是否包含 nzSearchValue(搜索使用) | `boolean` | `false` | | `setSyncChecked` | 设置 checked 状态并同步其他节点状态 | `function` | - | | `getChildren` | 获取子节点,返回 NzTreeNode 数组 | `function` | - | | `addChildren` | 添加子节点,接收 NzTreeNode 或 NzTreeNodeOptions 数组,第二个参数为插入的索引位置,默认插入末尾 | `(children: array, index?: number )=>{}` | - | | `clearChildren` | 清除子节点 | `function` | - | | `remove` | 清除当前节点(非根节点) | `function` | - | ## 注意 - 当前请确保 `nzData` 在其他数据相关的属性之前被初始化: ```typescript // 示例 this.nzExpandAll = false; const nodes = []; // 源数据 this.nzData = [...nodes]; // nzData 值异步获取变化后重新渲染一下属性 this.nzExpandedKeys = [...this.nzExpandedKeys]; // this.nzExpandAll = true; this.nzCheckedKeys = [...this.nzCheckedKeys]; this.nzSelectedKeys = [...this.nzSelectedKeys]; ``` - `NzTreeNodeOptions` 可以接受用户自定义属性,可通过 `NzTreeNode.origin` 属性取得。 - 使用 ViewChild 时,Tree 方法需要在 ngAfterViewInit 中调用。 - `nzData` 属性请传递 NzTreeNodeOptions 数组。 --- --- category: Components type: 数据展示 title: TreeView subtitle: 树视图 tag: updated cover: 'https://gw.alipayobjects.com/zos/alicdn/Xh-oWqg9k/Tree.svg' description: 树视图组件,相比封装好的 Tree 组件具有更高的定制度和更好的性能。 --- ## 何时使用 更基础的 Tree 组件,允许在模版中定义每个组成部分,并手动管理状态。 > ⚠️ `nzTreeControl` 在 `v21.0.0` 中被移除,请使用 `nzLevelAccessor` 或 `nzChildrenAccessor` 替代。二者必须存在其一,否则无法正确构建视图。 ## API ### nz-tree-view | 参数 | 说明 | 类型 | 默认值 | | ---------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ----------------------------------- | | `[nzDataSource]` | 用于渲染树的数组数据 | `DataSource \| Observable \| T[]`, [DataSource](https://material.angular.io/cdk/tree/overview#data-source) | - | | `[nzLevelAccessor]` | 树层级访问方法([levelAccessor](https://material.angular.io/cdk/tree/api#CdkTree)),结合扁平数据使用 | `(dataNode: T) => number` | - | | `[nzChildrenAccessor]` | 树子节点访问方法([childrenAccessor](https://material.angular.io/cdk/tree/api#CdkTree)),结合嵌套数据使用 | `(dataNode: T) => T[]` | - | | `[nzTrackBy]` | 用于检查数据变化的差异,使用方式类似于 ngFor 的 trackBy 函数 | `TrackByFunction` | `(_index, dataNode: T) => dataNode` | | `[nzDirectoryTree]` | 节点是否以文件夹样式显示 | `boolean` | `false` | | `[nzBlockNode]` | 节点是否占据整行 | `boolean` | `false` | ### nz-tree-virtual-scroll-view 虚拟滚动的树视图,可以通过组件实例上的 `virtualScrollViewport` 成员访问 [CdkVirtualScrollViewport](https://material.angular.io/cdk/scrolling/api#CdkVirtualScrollViewport) 实例。 | 参数 | 说明 | 类型 | 默认值 | | ---------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ----------------------------------- | | `[nzDataSource]` | 用于渲染树的数组数据 | `DataSource \| Observable \| T[]`, [DataSource](https://material.angular.io/cdk/tree/overview#data-source) | - | | `[nzLevelAccessor]` | 树层级访问方法([levelAccessor](https://material.angular.io/cdk/tree/api#CdkTree)),结合扁平数据使用 | `(dataNode: T) => number` | - | | `[nzChildrenAccessor]` | 树子节点访问方法([childrenAccessor](https://material.angular.io/cdk/tree/api#CdkTree)),结合嵌套数据使用 | `(dataNode: T) => T[]` | - | | `[nzTrackBy]` | 用于检查数据变化的差异,使用方式类似于 ngFor 的 trackBy 函数 | `TrackByFunction` | `(_index, dataNode: T) => dataNode` | | `[nzDirectoryTree]` | 节点是否以文件夹样式显示 | `boolean` | `false` | | `[nzBlockNode]` | 节点是否占据整行 | `boolean` | `false` | | `[nzItemSize]` | 节点的尺寸(px) | `number` | `28` | | `[nzMinBufferPx]` | 超出渲染区的最小缓存区大小(px) | `number` | `28 * 5` | | `[nzMaxBufferPx]` | 需要渲染新节点时的缓冲区大小(px) | `number` | `28 * 10` | ### [nzTreeNodeDef] 用于定义 `nz-tree-node` 的指令。 | 参数 | 说明 | 类型 | 默认值 | | --------------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ------ | | `[nzTreeNodeDefWhen]` | 用于定义是否使用此节点的方法,优先匹配第一个返回 `true` 的节点。如果没有返回 `true` 的节点,则匹配未定义此方法的节点。 | `(index: number, nodeData: T) => boolean` | - | ### nz-tree-node 树节点容器组件,需要通过 `nzTreeNodeDef` 指令定义。 | 参数 | 说明 | 类型 | 默认值 | | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------- | | `[nzExpandable]` | [节点是否可展开](https://material.angular.io/cdk/tree/api#CdkTreeNode),使用 `nzLevelAccessor` 或 `nzChildrenAccessor` 时需要明确指定该参数值。 | `boolean` | `false` | ### [nzTreeNodePadding] 以添加 `padding` 的方式显示节点缩进 **性能最好**。 ```html ``` ### nzTreeNodeIndentLine 以添加缩进线的方式显示节点缩进。 ```html ``` ### nz-tree-node-toggle 切换部分,用于节点的展开/收起。 | 参数 | 说明 | 类型 | 默认值 | | ----------------------------- | ------------------- | --------- | ------- | | `[nzTreeNodeToggleRecursive]` | 是否为递归展开/收起 | `boolean` | `false` | ### nz-tree-node-toggle[nzTreeNodeNoopToggle] 不做任何操作的切换部分,可用于占位或者显示图标。 ### [nzTreeNodeToggleRotateIcon] 定义切换部分中的图标,会随着展开收起状态自动旋转。 ### [nzTreeNodeToggleActiveIcon] 定义切换部分中的图标,使其具有激活状态的样式,可用于 loading 图标。 ### nz-tree-node-option 定义节点中的可选择部分。 | 参数 | 说明 | 类型 | 默认值 | | -------------- | ------------ | -------------------------- | ------- | | `[nzSelected]` | 是否选中 | `boolean` | `false` | | `[nzDisabled]` | 是否禁用 | `boolean` | `false` | | `(nzClick)` | 点击时的事件 | `EventEmitter` | - | ### nz-tree-node-checkbox 定义节点中的可勾选的部分。 | 参数 | 说明 | 类型 | 默认值 | | ------------------- | ------------ | -------------------------- | ------- | | `[nzChecked]` | 是否勾选 | `boolean` | `false` | | `[nzIndeterminate]` | 是否为半选 | `boolean` | `false` | | `[nzDisabled] ` | 是否禁用 | `boolean` | `false` | | `(nzClick)` | 点击时的事件 | `EventEmitter` | - | ## Classes ### NzTreeViewFlatDataSource extends DataSource 用于扁平数据的 `dataSource`,能够自动响应视图、数据变化,结合 `nzLevelAccessor` 使用。 **构造参数** | 名称 | 说明 | | -------------------------------------- | -------------------------------------------------- | | `tree: NzTreeView` | Tree View 组件实例 | | `treeFlattener: NzTreeFlattener` | 用于将嵌套节点 `` 转化为扁平节点 `` 的展平器 | | `initialData: T[] = []` | 初始数据 `` | **方法** | 名称 | 说明 | | -------------------------------------------------------------- | ------------------------------------------------- | | `connect(collectionViewer: CollectionViewer): Observable` | TreeView 组件中调用,发射 flattenData 给 TreeView | | `disconnect(): void` | TreeView 组件销毁时调用 | | `setData(value: T[]): void` | 设置初始数据 `` | | `getData(): T[]` | 获取初始数据 `` | | `setFlattenedData(nodes: F[]): void` | 设置扁平数据 `` | | `getFlattenData(): F[]` | 获取扁平数据 `` | ### NzTreeViewNestedDataSource extends DataSource 用于嵌套数据的 `dataSource`,能够自动响应视图、数据变化,结合 `nzChidrenAccessor` 使用。 **构造参数** | 名称 | 说明 | | ----------------------- | ------------------ | | `tree: NzTreeView` | Tree View 组件实例 | | `initialData: T[] = []` | 初始数据 `` | **方法** | 名称 | 说明 | | -------------------------------------------------------------- | ------------------------------------------ | | `connect(collectionViewer: CollectionViewer): Observable` | TreeView 组件中调用,发射 data 给 TreeView | | `disconnect(): void` | TreeView 组件销毁时调用 | | `setData(value: T[]): void` | 设置初始数据 `` | | `getData(): T[]` | 获取初始数据 `` | ### NzTreeFlattener 将具有子节点的嵌套数据转换为具有级别(level)信息的转换器类。 **构造参数** | 名称 | 说明 | | ----------------------------------------------------------------------- | ------------------------------------------- | | `transformFunction: (node: T, level: number) => F` | 接收一个嵌套节点 ``,返回扁平节点 `` | | `getLevel: (node: F) => number` | 定义从扁平节点数据中获取 `level` 属性的方法 | | `isExpandable: (node: F) => boolean` | 定义是否为可展开节点的方法 | | `getChildren: (node: T) => Observable \| T[] \| undefined \| null` | 定义从嵌套数据 `` 中获取子节点的方法 | **方法** | 名称 | 说明 | | ---------------------------------------- | -------------------------------------- | | `flattenNodes(structuredData: T[]): F[]` | 接收嵌套数据 ``,返回扁平数据 `` | ## utils Tree View 中常用的工具类。提供获取当前树节点的父亲、兄弟、子孙节点等方法,包含两套方法以分别用于**扁平**和**嵌套**数据结构。 **扁平数据** | 名称 | 说明 | | ------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------- | | `getParent: (nodes: F[], node: F, getLevel: (dataNode: F) => number): F \| null` | 返回当前节点的父节点 | | `getDescendants: (nodes: F[], node: F, getLevel: (dataNode: F) => number): F[]` | 返回当前节点的所有子孙节点 | | `getNextSibling: (nodes: F[], node: F, getLevel: (dataNode: F) => number, _index?: number): F \| null` | 返回当前节点的下一个兄弟节点(或 `_index` 后的第一个兄弟节点) | **嵌套数据** | 名称 | 说明 | | -------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | `getParentForNestedData: (nodes: T[], node: T, getChildren: (dataNode: T) => T[]): T \| null` | 返回当前节点的父节点 | | `getDescendantsForNestedData: (node: T, getChildren: (dataNode: T) => T[]): T[]` | 返回当前节点的所有子孙节点 | | `getNextSiblingForNestedData: (nodes: T[], node: T, getChildren: (dataNode: T) => T[]): T \| null` | 返回当前节点的下一个兄弟节点 | | `flattenNestedNodes: (nodes: T[], getChildren: (dataNode: T) => T[]): T[]` | 铺平嵌套数据,返回扁平数组,但不会改变节点属性。 | --- --- category: Components subtitle: 树选择 type: 数据录入 title: TreeSelect cover: 'https://gw.alipayobjects.com/zos/alicdn/Ax4DA0njr/TreeSelect.svg' description: 树型选择控件。 --- ## 何时使用 类似 Select 的选择控件,可选择的数据结构是一个树形结构时,可以使用 TreeSelect,例如公司层级、学科系统、分类目录等等。 ## API ### nz-tree-select | 参数 | 说明 | 类型 | 默认值 | 全局配置 | 版本 | | ------------------------------ | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------- | -------- | ------ | | `[nzId]` | 组件内部 input 的 id 值 | `string` | - | | `[nzAllowClear]` | 显示清除按钮 | `boolean` | `false` | | `[nzPlaceHolder]` | 选择框默认文字 | `string` | - | | `[nzPlacement]` | 选择框弹出的位置 | `'bottomLeft' \| 'bottomRight' \| 'topLeft' \| 'topRight'` | `'bottomLeft'` | | `[nzDisabled]` | 禁用选择器 | `boolean` | `false` | | `[nzShowIcon]` | 是否展示 TreeNode title 前的图标,没有默认样式 | `boolean` | `false` | ✅ | | `[nzShowSearch]` | 显示搜索框 | `boolean` | `false` | | `[nzNotFoundContent]` | 当下拉列表为空时显示的内容 | `'string' \| 'TemplateRef'` | - | | `[nzDropdownMatchSelectWidth]` | 下拉菜单和选择器同宽 | `boolean` | `true` | ✅ | | `[nzDropdownStyle]` | 下拉菜单的样式 | `{ [key: string]: string; }` | - | | `[nzDropdownClassName]` | 下拉菜单的 className 属性 | `string` | - | | `[nzMultiple]` | 支持多选(当设置 nzCheckable 时自动变为 true) | `boolean` | `false` | | `[nzHideUnMatched]` | 搜索隐藏未匹配的节点 | `boolean` | `false` | ✅ | | `[nzSize]` | 选择框大小 | `'large' \| 'small' \| 'default'` | `'default'` | ✅ | | `[nzStatus]` | 设置校验状态 | `'error' \| 'warning'` | - | | | `[nzCheckable]` | 节点前添加 Checkbox 复选框 | `boolean` | `false` | | `[nzCheckStrictly]` | checkable 状态下节点选择完全受控(父子节点选中状态不再关联) | `boolean` | `false` | | `[nzShowExpand]` | 节点前添加展开图标 | `boolean` | `true` | | | `[nzShowLine]` | 是否展示连接线 | `boolean` | `false` | | | `[nzPrefix]` | 自定义的选择框前缀 | `TemplateRef \| string` | - | | | `[nzSuffixIcon]` | 自定义的选择框后缀图标 | `TemplateRef \| string` | - | | | `[nzAsyncData]` | 是否异步加载(显示加载状态) | `boolean` | `false` | | `[nzNodes]` | treeNodes 数据 | `NzTreeNodeOptions[]` | `[]` | | `[nzDefaultExpandAll]` | 默认展开所有树节点 | `boolean` | `false` | | `[nzExpandedKeys]` | 默认展开指定的树节点 | `string[]` | - | | `[nzDisplayWith]` | 如何在输入框显示所选的节点值的方法 | `(node: NzTreeNode) => string` | `(node: NzTreeNode) => node.title` | | `[nzMaxTagCount]` | 最多显示多少个 tag | `number` | - | | `[nzMaxTagPlaceholder]` | 隐藏 tag 时显示的内容 | `TemplateRef<{ $implicit: NzTreeNode[] }>` | - | | `[nzTreeTemplate]` | 自定义节点 | `TemplateRef<{ $implicit: NzTreeNode }>` | - | | `[nzVariant]` | 形态变体 | `'outlined' \| 'borderless' \| 'filled' \| 'underlined'` | `'outlined'` | ✅ | 20.0.0 | | `[nzVirtualHeight]` | 虚拟滚动的总高度 | `string` | `-` | | `[nzVirtualItemSize]` | 虚拟滚动时每一列的高度,与 [cdk itemSize](https://material.angular.io/cdk/scrolling/api) 相同 | `number` | `28` | | `[nzVirtualMaxBufferPx]` | 缓冲区最大像素高度,与 [cdk maxBufferPx](https://material.angular.io/cdk/scrolling/api) 相同 | `number` | `500` | | `[nzVirtualMinBufferPx]` | 缓冲区最小像素高度,低于该值时将加载新结构,与 [cdk minBufferPx](https://material.angular.io/cdk/scrolling/api) 相同 | `number` | `28` | | `[nzBackdrop]` | 浮层是否应带有背景板 | `boolean` | `false` | | `(nzExpandChange)` | 点击展开树节点图标调用 | `EventEmitter` | - | #### 方法 | 方法名 | 说明 | 返回值 | | ------------------------ | ---------------------------------- | -------------- | | `getTreeNodes` | 获取组件 NzTreeNode 节点 | `NzTreeNode[]` | | `getTreeNodeByKey` | 按 key 获取 NzTreeNode 节点 | `NzTreeNode` | | `getCheckedNodeList` | 获取组件 checkbox 被点击选中的节点 | `NzTreeNode[]` | | `getSelectedNodeList` | 获取组件被选中的节点 | `NzTreeNode[]` | | `getHalfCheckedNodeList` | 获取组件半选状态节点 | `NzTreeNode[]` | | `getExpandedNodeList` | 获取组件展开状态节点 | `NzTreeNode[]` | | `getMatchedNodeList` | 获取组搜索匹配到的节点 | `NzTreeNode[]` | ## FAQ ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components subtitle: 步骤条 type: 导航 cols: 1 title: Steps cover: 'https://gw.alipayobjects.com/zos/antfincdn/UZYqMizXHaj/Steps.svg' description: 引导用户按照流程完成任务的导航条。 --- ## 何时使用 当任务复杂或者存在先后关系时,将其分解成一系列步骤,从而简化任务。 ## API ```html ``` ### nz-steps 整体步骤条。 | 参数 | 说明 | 类型 | 默认值 | | -------------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- | -------------- | | `[nzType]` | 步骤条类型,有 `default` 和 `navigation` 两种 | `'default' \| 'navigation'` | `'default'` | | `[nzCurrent]` | 指定当前步骤,从 0 开始记数。在子 `nz-step` 元素中,可以通过 `nzStatus` 属性覆盖状态 | `number` | `0` | | `[nzDirection]` | 指定步骤条方向。目前支持水平(`horizontal`)和竖直(`vertical`)两种方向 | `'vertical' \| 'horizontal'` | `'horizontal'` | | `[nzLabelPlacement]` | 指定标签放置位置,默认水平放图标右侧,可选 `vertical` 放图标下方 | `'vertical' \| 'horizontal'` | `'horizontal'` | | `[nzProgressDot]` | 点状步骤条,可以设置为一个 TemplateRef | `boolean \| TemplateRef<{ $implicit: TemplateRef, status: string, index: number }>` | `false` | | `[nzSize]` | 指定大小,目前支持普通(`default`)和迷你(`small`) | `'small' \| 'default'` | `'default'` | | `[nzStatus]` | 指定当前步骤的状态,可选 `wait` `process` `finish` `error` | `'wait' \| 'process' \| 'finish' \| 'error'` | `'process'` | | `[nzStartIndex]` | 指定起始位置的序号 | `number` | `0` | | `(nzIndexChange)` | 点击单个步骤时触发的事件 | `number` | - | ### nz-step 步骤条内的每一个步骤。 | 参数 | 说明 | 类型 | 默认值 | | ----------------- | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -------- | | `[nzDescription]` | 步骤的详情描述,可选 | `string \| TemplateRef` | - | | `[nzIcon]` | 步骤图标的类型,可选 | `string \| string[] \| Set \| { [klass: string]: any; }` \| `TemplateRef` | - | | `[nzStatus]` | 指定状态。当不配置该属性时,会使用 `nz-steps` 的 `nzCurrent` 来自动指定状态。可选:`wait` `process` `finish` `error` | `'wait' \| 'process' \| 'finish' \| 'error'` | `'wait'` | | `[nzTitle]` | 标题 | `string \| TemplateRef` | - | | `[nzSubtitle]` | 子标题 | `string \| TemplateRef` | - | | `[nzDisabled]` | 禁用点击 | `boolean` | `false` | | `[nzPercentage]` | 当前状态为 `process` 的步骤所显示的进度条进度(只对基本类型的 `nz-steps` 生效) | `number` | - | --- --- category: Components subtitle: 气泡卡片 type: 数据展示 title: Popover cover: 'https://gw.alipayobjects.com/zos/alicdn/1PNL1p_cO/Popover.svg' description: 点击/鼠标移入元素,弹出气泡式的卡片浮层。 --- ## 何时使用 当目标元素有进一步的描述和相关操作时,可以收纳到卡片中,根据用户的操作行为进行展现。 和 `Tooltip` 的区别是,用户可以对浮层上的元素进行操作,因此它可以承载更复杂的内容,比如链接或按钮等。 ## API ### [nz-popover] | 参数 | 说明 | 类型 | 默认值 | | ------------------------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | | `[nzPopoverArrowPointAtCenter]` | 箭头指向锚点的中心 | `boolean` | `false` | | `[nzPopoverTitle]` | 标题 | `string \| TemplateRef` | - | | `[nzPopoverTitleContext]` | 标题的上下文 | `object` | - | | `[nzPopoverContent]` | 用于定义内容 | `string \| TemplateRef` | - | | `[nzPopoverContentContext]` | 内容的上下文 | `object` | - | | `[nzPopoverTrigger]` | 触发行为,为 `null` 时不响应光标事件 | `'click' \| 'focus' \| 'hover' \| null` | `'hover'` | | `[nzPopoverPlacement]` | 气泡框位置 | `'top' \| 'left' \| 'right' \| 'bottom' \| 'topLeft' \| 'topRight' \| 'bottomLeft' \| 'bottomRight' \| 'leftTop' \| 'leftBottom' \| 'rightTop' \| 'rightBottom' \| Array` | `'top'` | | `[nzPopoverOrigin]` | 气泡框定位元素 | `ElementRef` | - | | `[nzPopoverVisible]` | 显示隐藏气泡框 | `boolean` | `false` | | `(nzPopoverVisibleChange)` | 显示隐藏的事件 | `EventEmitter` | - | | `[nzPopoverMouseEnterDelay]` | 鼠标移入后延时多少才显示气泡框,单位:秒 | `number` | `0.15` | | `[nzPopoverMouseLeaveDelay]` | 鼠标移出后延时多少才隐藏气泡框,单位:秒 | `number` | `0.1` | | `[nzPopoverOverlayClassName]` | 卡片类名 | `string` | - | | `[nzPopoverOverlayStyle]` | 卡片样式 | `object` | - | | `[nzPopoverBackdrop]` | 浮层是否应带有背景板 | `boolean` | `false` | | `[nzPopoverOverlayClickable]` | 点击蒙层关闭气泡框,仅`click`触发行为有效 | `boolean` | `true` | 更多属性请参考 [Tooltip](/components/tooltip/zh#api)。 ## 注意 请确保 `[nz-popover]` 元素能接受 `onMouseEnter`、`onMouseLeave`、`onFocus`、`onClick` 事件。 ## FAQ ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components subtitle: 气泡确认框 type: 反馈 title: Popconfirm cover: 'https://gw.alipayobjects.com/zos/alicdn/fjMCD9xRq/Popconfirm.svg' description: 点击元素,弹出气泡式的确认框。 --- ## 何时使用 目标元素的操作需要用户进一步的确认时,在目标元素附近弹出浮层提示,询问用户。 和 `confirm` 弹出的全屏居中模态对话框相比,交互形式更轻量。 ## API ### [nz-popconfirm] | 参数 | 说明 | 类型 | 默认值 | | ---------------------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | | `[nzPopconfirmArrowPointAtCenter]` | 箭头指向锚点的中心 | `boolean` | `false` | | `[nzPopconfirmTitle]` | 确认框的描述 | `string \| TemplateRef` | - | | `[nzPopconfirmTitleContext]` | 确认框描述的上下文 | `object` | - | | `[nzPopconfirmTrigger]` | 触发行为,为 `null` 时不响应光标事件 | `'click' \| 'focus' \| 'hover' \| null` | `'click'` | | `[nzPopconfirmPlacement]` | 气泡框位置 | `'top' \| 'left' \| 'right' \| 'bottom' \| 'topLeft' \| 'topRight' \| 'bottomLeft' \| 'bottomRight' \| 'leftTop' \| 'leftBottom' \| 'rightTop' \| 'rightBottom' \| Array` | `'top'` | | `[nzPopconfirmOrigin]` | 气泡框定位元素 | `ElementRef` | - | | `[nzPopconfirmVisible]` | 显示隐藏气泡框 | `boolean` | `false` | | `[nzPopconfirmShowArrow]` | 气泡框是否包含箭头 | `boolean` | `true` | | `[nzPopconfirmPlacement]` | 确认框位置 | `'top' \| 'left' \| 'right' \| 'bottom' \| 'topLeft' \| 'topRight' \| 'bottomLeft' \| 'bottomRight' \| 'leftTop' \| 'leftBottom' \| 'rightTop' \| 'rightBottom'` | `'top'` | | `[nzPopconfirmOrigin]` | 确认框定位元素 | `ElementRef` | - | | `[nzPopconfirmVisible]` | 显示隐藏确认框 | `boolean` | `false` | | `(nzPopconfirmVisibleChange)` | 显示隐藏的事件 | `EventEmitter` | - | | `[nzPopconfirmMouseEnterDelay]` | 鼠标移入后延时多少才显示确认框,单位:秒 | `number` | `0.15` | | `[nzPopconfirmMouseLeaveDelay]` | 鼠标移出后延时多少才隐藏确认框,单位:秒 | `number` | `0.1` | | `[nzPopconfirmOverlayClassName]` | 卡片类名 | `string` | - | | `[nzPopconfirmOverlayStyle]` | 卡片样式 | `object` | - | | `[nzPopconfirmBackdrop]` | 浮层是否应带有背景板 | `boolean` | `false` | | 参数 | 说明 | 类型 | 默认值 | 全局配置 | 版本 | | ----------------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------- | ----------- | -------- | ------ | | `[nzCancelText]` | 取消按钮文字 (已弃用,请使用 nzCancelButtonProps 代替) | `string` | `'取消'` | - | | `[nzOkText]` | 确认按钮文字 (已弃用,请使用 nzOkButtonProps 代替) | `string` | `'确定'` | - | | `[nzOkType]` | 确认按钮类型 (已弃用,请使用 nzOkButtonProps 代替) | `'primary' \| 'ghost' \| 'dashed' \| 'default'` | `'primary'` | - | | `[nzOkDanger]` | 确认按钮是否为危险按钮。与 `nz-button` 的 `nzDanger` 值保持一致(已弃用,请使用 nzOkButtonProps 代替) | `boolean` | `false` | - | | `[nzOkDisabled]` | 禁止与确认按钮交互。与 `nz-button` 的 `disabled` 值保持一致(已弃用,请使用 nzOkButtonProps 代替) | `boolean` | `false` | - | | `[nzOkButtonProps]` | 确定按钮的配置对象 | `NzPopConfirmButtonProps` | `null` | - | 20.0.0 | | `[nzCancelButtonProps]` | 取消按钮的配置对象 | `NzPopConfirmButtonProps` | `null` | - | 20.0.0 | | `[nzCondition]` | 是否直接触发 `nzOnConfirm` 而不弹出框 | `boolean` | `false` | - | | `[nzIcon]` | 自定义弹出框的 icon,设置为 `null` 时隐藏图标 | `string \| TemplateRef \| null` | - | - | | `[nzAutoFocus]` | 按钮的自动聚焦 | `null \| 'ok' \| 'cancel'` | `null` | ✅ | | `[nzBeforeConfirm]` | 确认操作之前的钩子,决定是否继续响应 `nzOnConfirm` 回调,支持异步验证。 | `(() => Observable \| Promise \| boolean) \| null` | `null` | - | | `(nzOnCancel)` | 点击取消的回调 | `EventEmitter` | - | - | | `(nzOnConfirm)` | 点击确认的回调 | `EventEmitter` | - | - | 更多属性请参考 [Tooltip](/components/tooltip/zh#api)。 ## 注意 请确保 `[nz-popconfirm]` 元素能接受 `onMouseEnter`、`onMouseLeave`、`onFocus`、`onClick` 事件。 ## FAQ ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components type: 其他 subtitle: 水印 title: Watermark cols: 1 tag: 15.1.0 cover: 'https://img.alicdn.com/imgextra/i2/O1CN01ozPPZp1wj9CwsVvDL_!!6000000006343-0-tps-1232-820.jpg' description: 给页面的某个区域加上水印。 --- ## 何时使用 - 页面需要添加水印标识版权时使用。 - 适用于防止信息盗用。 ## API ### nz-watermark | 参数 | 说明 | 类型 | 默认值 | | ----------- | ----------------------------------------------------------- | -------------------- | -------------------------- | | `nzContent` | 水印文字内容 | `string \| string[]` | - | | `nzWidth` | 水印的宽度,`nzContent` 的默认值为自身的宽度 | `number` | `120` | | `nzHeight` | 水印的高度,`nzContent` 的默认值为自身的高度 | `number` | `64` | | `nzRotate` | 水印绘制时,旋转的角度,单位 `°` | `number` | `-22` | | `nzZIndex` | 追加的水印元素的 z-index | `number` | `9` | | `nzImage` | 图片源,建议导出 2 倍或 3 倍图,优先级高 (支持 base64 格式) | `string` | - | | `nzFont` | 文字样式 | `FontType` | FontType | | `nzGap` | 水印之间的间距 | `[number, number]` | `[100, 100]` | | `nzOffset` | 水印距离容器左上角的偏移量,默认为 `nzGap/2` | `[number, number]` | `[nzGap[0]/2, nzGap[1]/2]` | ### FontType | 参数 | 说明 | 类型 | 默认值 | | ------------ | -------- | --------------------------------------------- | ----------------- | | `color` | 字体颜色 | `string` | `rgba(0,0,0,.15)` | | `fontSize` | 字体大小 | `number` | `16` | | `fontWeight` | 字体粗细 | `'normal' \| 'light' \| 'weight' \| number` | `'normal'` | | `fontFamily` | 字体类型 | `string` | `'sans-serif'` | | `fontStyle` | 字体样式 | `'none' \| 'normal' \| 'italic' \| 'oblique'` | `'normal'` | ## FAQ ### 处理异常图片水印 当使用图片水印且图片加载异常时,可以同时添加 `nzContent` 防止水印失效。 ```html
      ``` --- --- category: Components subtitle: 流程图 type: 数据展示 title: Graph cols: 1 experimental: true description: 渲染流程图。 --- ## 何时使用 需要在网页上渲染 Graph 图时使用。 ### 安装依赖 > 目前组件依赖 d3-drag d3-zoom d3-selection d3-transition d3-shape 用于绘制相关属性(可能会在之后的版本中逐步替换) ```sh npm install dagre-compound dagre d3-transition d3-zoom d3-selection d3-shape d3-drag @types/d3 ``` ### 引入样式 ```less @import 'node_modules/ng-zorro-antd/graph/style/entry.less'; ``` ## API ### nz-graph | 参数 | 说明 | 类型 | 默认值 | | ----------------------- | ------------------------------------ | ------------------------------------ | ------- | | `[nzGraphData]` | 数据源 | `NzGraphData(data: NzGraphDataDef?)` | `` | | `[nzRankDirection]` | 图方向 | `TB` \| `BT` \| `LR` \| `RL` | `LR` | | `[nzAutoSize]` | 是否根据节点内容自适应高度(默认等高) | `boolean` | `false` | | `[nzGraphLayoutConfig]` | 全局配置 | `NzGraphLayoutConfig` | `` | #### 组件方法 | 名称 | 描述 | | ------------- | ---------------------------------------------------------- | | `fitCenter()` | 居中图并自适应缩放(如使用缩放功能请使用 `nz-graph-zoom`) | ### [nz-graph-zoom] | 参数 | 说明 | 类型 | 默认值 | | -------------------- | ------------------ | -------------------------------------------- | ------ | | `[(nzZoom)]` | 缩放比例 | `number` | `1` | | `[nzMinZoom]` | 最小缩放 | `number` | `0.1` | | `[nzMaxZoom]` | 最大缩放 | `number` | `10` | | `(nzTransformEvent)` | 缩放事件 | `() => NzZoomTransform` | - | | `(fitCenter)` | 居中图并自适应缩放 | `() => void` | `void` | | `(focus)` | 居中单个节点 | `(e: SVGGElement, duration: number) => void` | `void` | #### NzGraphData | 属性/方法 | 说明 | 类型 | | ---------------- | ----------------------- | -------------------------------- | | `setData` | 设置数据源 | `(data: NzGraphDataDef) => void` | | `toggle` | 收起/展开 group 节点 | `(nodeName: string) => void` | | `expand` | 展开 group 节点 | `(nodeName: string) => void` | | `expandAll` | 展开全部 group 节点 | `(nodeName: string) => void` | | `collapse` | 收起全部 group 节点 | `(nodeName: string) => void` | | `isExpand` | 获取 group 节点展开状态 | `(nodeName: string) => boolean` | | `expansionModel` | 展开节点存储对象 | `SelectionModel` | ### NzGraphLayoutConfig | 属性 | 说明 | 类型 | | --------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------- | | `layout` | 布局参数 | `{ nodeSep: number; rankSep: number; edgeSep: number; }` | | `subScene` | group 节点 | `{ paddingTop: number; paddingBottom: number; paddingLeft: number; paddingRight: number; labelHeight: number; }` | | `defaultCompoundNode` | group 节点 size | `{ width: number; height: number; maxLabelWidth: number; }` | | `defaultNode` | 默认节点 size | `{ width: number; height: number; labelOffset: number; maxLabelWidth: number; }` | #### NzGraphDataDef | 属性 | 说明 | 类型 | 默认值 | | ---------- | ---- | ----------------------------------------------------------------------------------------------------- | ------ | | `nodes` | 节点 | `Array<{ id: number\|string; label?: string; width?: number; height?: number; [key: string]: any; }>` | `[]` | | `edges` | 线 | `Array<{ v: number\|string; w: number\|string; [key: string]: any; }>` | `[]` | | `compound` | 分组 | `{ [parent: string]: string[]; }` | `null` | #### NzGraphNode | 属性 | 说明 | 类型 | | ---------------- | ------------------------ | ------------------------------------ | | `id` | id | `number\|string` | | `label?` | 节点内容 | `string` | | `name` | 节点名称 | `number\|string` | | `type` | 节点类型(组: 0, 节点: 1) | `number` | | `parentNodeName` | 父节点名称 | `string` | | `coreBox` | 布局高宽 | `{ width: number; height: number; }` | | `xOffset` | x 偏移 | `number` | | `yOffset` | y 偏移 | `number` | | `width` | 宽度 | `number` | | `height` | 高度 | `number` | | `[key: string]` | 用户输入 | `any` | #### NzGraphEdge | 属性 | 说明 | 类型 | | -------- | -------- | ---------------------------------- | | `id` | id | `string` | | `v` | 起始节点 | `number\|string` | | `w` | 目标节点 | `number\|string` | | `label?` | 线内容 | `string` | | `points` | points | `Array<{ x: number; y: number; }>` | #### NzGraphGroupNode | 属性 | 类型 | | ---------- | -------------------------------------- | | `expanded` | `boolean` | | `nodes` | `Array` | | `edges` | `NzGraphEdge[]` | ### [nzGraphNode] 自定义叶子节点渲染模板 ```html {{ node.name }} - {{ node.label }} ``` ### [nzGraphGroupNode] 自定义组节点渲染模板 ```html {{ node.name }} - {{ node.label }} ``` ### [nzGraphEdge] 自定义边渲染模板 ```html ``` ### 样式 组件样式包含了必要的属性和简单的样式,你可以通过覆写下列类名自定义样式。 - `.nz-graph` `nz-graph` 组件命名空间 - `.nz-graph-nodes` 节点 - `.nz-graph-node` 单个节点 - `.nz-graph-node-expanded` 展开节点 - `.nz-graph-group-node` 组节点 - `.nz-graph-base-node` 叶子节点 - `.nz-graph-edges` 连接线 - `.nz-graph-edge` 单条线 - `path.nz-graph-edge-line` 线 path 元素 - `.nz-graph-edge-text` 线文本元素 ## 说明 - [dagre-compound](https://www.npmjs.com/package/dagre-compound): 基于 Dagre 的 嵌套布局计算库 - [SelectionModel](https://github.com/angular/components/blob/master/src/cdk/collections/selection-model.ts) --- --- category: Components subtitle: 滑动输入条 type: 数据录入 title: Slider cover: 'https://gw.alipayobjects.com/zos/alicdn/HZ3meFc6W/Silder.svg' description: 滑动型输入器,展示当前值和可选范围。 --- ## 何时使用 当用户需要在数值区间/自定义区间内进行选择时,可为连续或离散值。 ## API ### nz-slider | 参数 | 说明 | 类型 | 默认值 | | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------- | | `[nzDisabled]` | 值为 `true` 时,滑块为禁用状态 | `boolean` | `false` | | `[nzDots]` | 是否只能拖拽到刻度上 | `boolean` | `false` | | `[nzIncluded]` | `marks` 不为空对象时有效,值为 true 时表示值为包含关系,false 表示并列 | `boolean` | `true` | | `[nzMarks]` | 刻度标记,key 的类型必须为 `number` 且取值在闭区间 `[min, max]` 内,每个标签可以单独设置样式 | `object` | `{ number: string/HTML }` or `{ number: { style: object, label: string/HTML } }` | | `[nzMax]` | 最大值 | `number` | `100` | | `[nzMin]` | 最小值 | `number` | `0` | | `[nzRange]` | 双滑块模式 | `boolean` | `false` | | `[nzStep]` | 步长,取值必须大于 0,并且可被 (max - min) 整除。当 `marks` 不为空对象时,可以设置 `step` 为 `null`,此时 Slider 的可选值仅有 marks 标出来的部分。 | `number \| null` | `1` | | `[nzTipFormatter]` | Slider 会把当前值传给 `nzTipFormatter`,并在 Tooltip 中显示 `nzTipFormatter` 的返回值,若为 null,则隐藏 Tooltip。 | `(value: number) => string \| TemplateRef` | - | | `[ngModel]` | 设置当前取值。当 `range` 为 `false` 时,使用 `number`,否则用 `[number, number]` | `number \| number[]` | - | | `[nzVertical]` | 值为 `true` 时,Slider 为垂直方向 | `boolean` | `false` | | `[nzReverse]` | 反向坐标轴 | `boolean` | `false` | | `[nzTooltipVisible]` | 值为 `always` 时总是显示,值为 `never` 时在任何情况下都不显示 | `'default' \| 'always' \| 'never'` | `'default'` | | `[nzTooltipPlacement]` | 设置 Tooltip 的默认位置。 | `string` | | | `(nzOnAfterChange)` | 与 `onmouseup` 触发时机一致,把当前值作为参数传入。 | `EventEmitter` | - | | `(ngModelChange)` | 当 Slider 的值发生改变时,会触发 ngModelChange 事件,并把改变后的值作为参数传入。 | `EventEmitter>` | - | --- --- category: Components type: 数据展示 subtitle: 空状态 title: Empty cols: 1 cover: 'https://gw.alipayobjects.com/zos/alicdn/MNbKfLBVb/Empty.svg' description: 空状态时的展示占位图。 --- ## 何时使用 当目前没有数据时,用于显式的用户提示。 ## API ### nz-empty | 参数 | 说明 | 类型 | 默认值 | | --------------------- | ---------------------------------------------- | ------------------------------------- | ------ | | `[nzNotFoundImage]` | 设置显示图片,为 `string` 时表示自定义图片地址 | `string \| TemplateRef` | - | | `[nzNotFoundContent]` | 自定义描述内容 | `string \| TemplateRef \| null` | - | | `[nzNotFoundFooter]` | 设置自定义 footer | `string \| TemplateRef` | - | ### `NZ_CONFIG` `nzEmpty` 接口有如下字段: | 参数 | 说明 | 类型 | | ----------------------- | ------------------------------------------------------------------- | --------------------------------------------------------- | | `nzDefaultEmptyContent` | 用户自定义的全局空组件,可通过 `undefined` 来取消自定义的全局空组件 | `Type \| TemplateRef \| string \| undefined` | ### InjectionToken | Token | 说明 | 参数 | | ------------------------- | ---------------------------------------------------------------- | -------- | | `NZ_EMPTY_COMPONENT_NAME` | 将会被注入到用户的全局自定义空组件中,告诉该组件其所在组件的名称 | `string` | ### 全局自定义空组件 你或许知道或者用过一些类似 `nzNotFoundContent` 的属性来自定义组件数据为空时的内容,现在它们都会使用 `Empty` 组件。你可以通过在 `NZ_CONFIG` 中提供 `{ empty: { nzDefaultEmptyContent: something } }` 来定义一个自定义的全局空组件。 ```ts { provide: NZ_CONFIG, useValue: { empty: { nzDefaultEmptyContent } } } ``` --- --- category: Components subtitle: 穿梭框 type: 数据录入 cols: 1 title: Transfer cover: 'https://gw.alipayobjects.com/zos/alicdn/QAXskNI4G/Transfer.svg' description: 双栏穿梭选择框。 --- ## 何时使用 - 需要在多个可选项中进行多选时。 - 比起 Select 和 TreeSelect,穿梭框占据更大的空间,可以展示可选项的更多信息。 穿梭选择框用直观的方式在两栏中移动元素,完成选择行为。 选择一个或以上的选项后,点击对应的方向键,可以把选中的选项移动到另一栏。 其中,左边一栏为 `source`,右边一栏为 `target`,API 的设计也反映了这两个概念。 ## API ### nz-transfer | 参数 | 说明 | 类型 | 默认值 | | ----------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ------------------ | | `[nzDataSource]` | 数据源,其中若数据属性 `direction: 'right'` 将会被渲染到右边一栏中或使用 `nzTargetKeys` | `TransferItem[]` | `[]` | | `[nzDisabled]` | 是否禁用 | `boolean` | `false` | | `[nzTitles]` | 标题集合,顺序从左至右 | `string[]` | `['', '']` | | `[nzOperations]` | 操作文案集合,顺序从下至上 | `string[]` | `['', '']` | | `[nzListStyle]` | 两个穿梭框的自定义样式,等同 `ngStyle` | `object` | - | | `[nzItemUnit]` | 单数单位 | `string` | `'项目'` | | `[nzItemsUnit]` | 复数单位 | `string` | `'项目'` | | `[nzRenderList]` | 自定义渲染列表,见示例 | `Array \| null>` | `[null, null]` | | `[nzRender]` | 每行数据渲染模板,见示例 | `TemplateRef` | - | | `[nzFooter]` | 底部渲染模板,见示例 | `TemplateRef` | - | | `[nzShowSelectAll]` | 是否显示全选框 | `boolean` | `true` | | `[nzShowSearch]` | 是否显示搜索框 | `boolean` | `false` | | `[nzFilterOption]` | 接收 `inputValue` `option` 两个参数,当 `option` 符合筛选条件时,应返回 `true`,反之则返回 `false`。 | `(inputValue: string, item: TransferItem) => boolean` | - | | `[nzSearchPlaceholder]` | 搜索框的默认值 | `string` | `'请输入搜索内容'` | | `[nzNotFoundContent]` | 当列表为空时显示的内容 | `string` | `'列表为空'` | | `[nzCanMove]` | 穿梭时二次校验。**注意:** 穿梭组件内部始终只保留一份数据,二次校验过程中需取消穿梭项则直接删除该项;具体用法见示例。 | `(arg: TransferCanMove) => Observable` | - | | `[nzSelectedKeys]` | 设置被选中的 key 集合 | `string[]` | - | | `[nzTargetKeys]` | 显示在右侧框数据的 key 集合 | `string[]` | - | | `[nzOneWay]` | 展示为单向样式 | `boolean` | `false` | | `[nzStatus]` | 设置校验状态 | `'error' \| 'warning'` | - | | `(nzChange)` | 选项在两栏之间转移时的回调函数 | `EventEmitter` | - | | `(nzSearchChange)` | 搜索框内容时改变时的回调函数 | `EventEmitter` | - | | `(nzSelectChange)` | 选中项发生改变时的回调函数 | `EventEmitter` | - | #### TransferItem | 参数 | 说明 | 类型 | 默认值 | | --------- | --------------------------------------------------- | ------------------- | ------- | | title | 标题,用于显示及搜索关键字判断 | `string` | - | | direction | 指定数据方向,若指定 `right` 为右栏,其他情况为左栏 | `'left' \| 'right'` | - | | disabled | 指定 checkbox 为不可用状态 | `boolean` | `false` | | checked | 指定 checkbox 为选中状态 | `boolean` | `false` | #### TransferCanMove | 参数 | 说明 | 类型 | 默认值 | | --------- | -------- | ------------------- | ------ | | direction | 数据方向 | `'left' \| 'right'` | - | | list | 数据源 | `TransferItem[]` | `[]` | #### TransferChange | 参数 | 说明 | 类型 | 默认值 | | ---- | -------- | ------------------- | ------ | | from | 数据方向 | `'left' \| 'right'` | - | | to | 数据方向 | `'left' \| 'right'` | - | | list | 数据源 | `TransferItem[]` | `[]` | #### TransferSearchChange | 参数 | 说明 | 类型 | 默认值 | | --------- | ---------- | ------------------- | ------ | | direction | 数据方向 | `'left' \| 'right'` | - | | value | 搜索关键词 | `string` | - | #### nzRenderList | 参数 | 说明 | 类型 | 默认值 | | ----------------- | -------------- | ------------------------------ | ------ | | `direction` | 渲染列表的方向 | `'left' \| 'right'` | - | | `disabled` | 是否禁用列表 | `boolean` | - | | `items` | 过滤后的数据 | `TransferItem[]` | - | | `onItemSelect` | 勾选条目 | `(item: TransferItem) => void` | - | | `onItemSelectAll` | 勾选一组条目 | `(selected: boolean) => void` | - | --- --- category: Components type: 数据录入 title: Cascader subtitle: 级联选择 cover: 'https://gw.alipayobjects.com/zos/alicdn/UdS8y8xyZ/Cascader.svg' description: 级联选择框。 --- ## 何时使用 - 需要从一组相关联的数据集合进行选择,例如省市区,公司层级,事物分类等。 - 从一个较大的数据集合中进行选择时,用多级分类进行分隔,方便选择。 - 比起 Select 组件,可以在同一个浮层中完成选择,有较好的体验。 ## API ### nz-cascader | 参数 | 说明 | 类型 | 默认值 | 支持全局配置 | 版本 | | --------------------- | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- | -------------- | ------------ | ------ | | `[ngModel]` | 指定选中项 | `any[]` | - | | `[nzAllowClear]` | 是否支持清除 | `boolean` | `true` | | `[nzAutoFocus]` | 是否自动聚焦,当存在输入框时 | `boolean` | `false` | | `[nzBackdrop]` | 浮层是否应带有背景板 | `boolean` | `false` | | `[nzChangeOn]` | 点击父级菜单选项时,可通过该函数判断是否允许值的变化 | `(option: any, index: number) => boolean` | - | | `[nzChangeOnSelect]` | 当此项为 true 时,点选每级菜单选项值都会发生变化,具体见上面的演示 | `boolean` | `false` | | `[nzColumnClassName]` | 自定义浮层列类名 | `string` | - | | `[nzDisabled]` | 禁用 | `boolean` | `false` | | `[nzExpandIcon]` | 自定义次级菜单展开图标 | `string \| TemplateRef` | - | | `[nzExpandTrigger]` | 次级菜单的展开方式,可选 `'click'` 和 `'hover'` | `'click' \| 'hover'` | `'click'` | | `[nzLabelProperty]` | 选项的显示值的属性名 | `string` | `'label'` | | `[nzLabelRender]` | 选择后展示的渲染模板 | `TemplateRef` | - | | `[nzLoadData]` | 用于动态加载选项。如果提供了`ngModel`初始值,且未提供`nzOptions`值,则会立即触发动态加载。 | `(option: any, index?: index) => PromiseLike \| Observable` | - | | `[nzMenuClassName]` | 自定义浮层类名 | `string` | - | | `[nzMenuStyle]` | 自定义浮层样式 | `object` | - | | `[nzMouseEnterDelay]` | 鼠标进入触发器后打开浮层的延迟时间(毫秒) | `number` | `150` | | `[nzMouseLeaveDelay]` | 鼠标离开触发器后关闭浮层的延迟时间(毫秒) | `number` | `150` | | `[nzMultiple]` | 是否支持多选 | `boolean` | `false` | | `[nzNotFoundContent]` | 当下拉列表为空时显示的内容 | `string \| TemplateRef` | - | | `[nzOptionRender]` | 选项的渲染模板 | `TemplateRef<{ $implicit: NzCascaderOption, index: number }>` | | | `[nzOptions]` | 可选项数据源 | `object[]` | - | | `[nzOpen]` | 控制浮层显隐 | `boolean` | `false` | - | 20.2.0 | | `[nzPlaceHolder]` | 输入框占位文本 | `string` | `'请选择'` | | `[nzPlacement]` | 浮层弹出位置 | `'bottomLeft' \| 'bottomRight' \| 'topLeft' \| 'topRight'` | `'bottomLeft'` | | `[nzShowArrow]` | 是否显示箭头 | `boolean` | `true` | | `[nzShowInput]` | 显示输入框 | `boolean` | `true` | | `[nzShowSearch]` | 是否支持搜索,默认情况下对 `label` 进行全匹配搜索,不能和 `[nzLoadData]` 同时使用 | `boolean \| NzShowSearchOptions` | `false` | | `[nzSize]` | 输入框大小,可选 `large` `default` `small` | `'large' \| 'small' \| 'default'` | `'default'` | ✅ | | `[nzStatus]` | 设置校验状态 | `'error' \| 'warning'` | - | | `[nzPrefix]` | 自定义的选择框前缀 | `string \| TemplateRef` | - | - | 20.2.0 | | `[nzSuffixIcon]` | 自定义的选择框后缀图标 | `string \| TemplateRef` | - | | `[nzValueProperty]` | 选项的实际值的属性名 | `string` | `'value'` | | `[nzVariant]` | 形态变体 | `'outlined' \| 'borderless' \| 'filled' \| 'underlined'` | `'outlined'` | ✅ | 20.0.0 | | `(ngModelChange)` | 值发生变化时触发 | `EventEmitter` | - | | `(nzClear)` | 清除值时触发 | `EventEmitter` | - | | `(nzVisibleChange)` | 菜单浮层的显示/隐藏 | `EventEmitter` | - | | `(nzRemoved)` | 多选模式下,移除值时触发 | `EventEmitter` | - | | `(nzSelectionChange)` | 值发生变化时触发 | `EventEmitter` | - | ### Interfaces #### NzCascaderOption ```ts export interface NzCascaderOption { value?: any; label?: string; title?: string; disabled?: boolean; loading?: boolean; isLeaf?: boolean; children?: NzCascaderOption[]; disableCheckbox?: boolean; [key: string]: any; } ``` #### NzShowSearchOptions ```ts export type NzShowSearchOptions = | boolean | { filter?: NzCascaderFilter; sorter?: NzCascaderSorter; }; ``` `nzShowSearch` 为对象时需遵守 `NzShowSearchOptions` 接口: | 参数 | 说明 | 类型 | 默认值 | | -------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------- | ------ | | `filter` | 可选,选择是否保留选项的过滤函数,每级菜单的选项都会被匹配 | `(inputValue: string, path: NzCascaderOption[]): boolean` | - | | `sorter` | 可选,按照到每个最终选项的路径进行排序,默认按照原始数据的顺序 | `(a: NzCascaderOption[], b: NzCascaderOption[], inputValue: string): number` | - | 默认的 filter 如下所示: ```ts const defaultFilter: NzCascaderFilter = (i, p) => { return p.some(o => { const label = o.label; return !!label && label.indexOf(i) !== -1; }); }; ``` 如果你想要在搜索时忽略大小写,就可以编写一个这样的 filter 函数: ```ts const filter: NzCascaderFilter = (i, p) => { return p.some(o => { const label = o.label; return !!label && label.toLowerCase().indexOf(i.toLowerCase()) !== -1; }); }; ``` #### 方法 | 名称 | 描述 | | ------------- | -------- | | `blur()` | 移除焦点 | | `focus()` | 获取焦点 | | `closeMenu()` | 隐藏菜单 | > 注意,如果需要获得中国省市区数据,可以参考 [china-division](https://gist.github.com/afc163/7582f35654fd03d5be7009444345ea17)。 ## FAQ ### Q: 为什么使用 `nzLoadData` 时报了一个错误 this === undefined ? 对传递给 Cascader 组件的 `nzLoadData` 参数会成为 `NzCasacderComponent` 对象的一个属性,调用这个函数时,函数中的 `this` 没有指向任何对象。 因此,正确的做法是传递剪头函数,或者使用 `Function.bind` 将 `nzLoadData` 参数和你的对象绑定。 [这里](https://stackoverflow.com/questions/60320913/ng-zorro-cascader-lazy-load-data-nzloaddata-function-got-this-undefined/60928983#60928983)是一个比较有代表性的例子。 ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components type: 反馈 title: Result subtitle: 结果 cols: 1 cover: 'https://gw.alipayobjects.com/zos/alicdn/9nepwjaLa/Result.svg' description: 用于反馈一系列操作任务的处理结果。 --- ## 何时使用 当有重要操作需告知用户处理结果,且反馈内容较为复杂时使用。 ## API ### nz-result | 属性 | 说明 | 类型 | 默认值 | | ------------ | -------------------------- | ----------------------------------------------------------------------- | -------- | | `nzTitle` | 标题 | `TemplateRef \| string` | - | | `nzSubTitle` | 副标题 | `TemplateRef \| string` | - | | `nzStatus` | 结果的状态,决定图标和颜色 | `'success' \| 'error' \| 'info' \| 'warning'\| '404' \| '403' \| '500'` | `'info'` | | `nzIcon` | 自定义 icon | `TemplateRef \| string` | - | | `nzExtra` | 操作区域 | `TemplateRef \| string` | - | ### 子元素 你可以在 nz-result 中加入如下指令,它们的优先级低于上面的参数。 | 元素 | 说明 | | ------------------------- | ------------------------ | | `[nz-result-icon]` | 在顶部展示的大图标 | | `div[nz-result-title]` | 标题 | | `div[nz-result-subtitle]` | 副标题 | | `div[nz-result-content]` | 内容,可以展示详细的信息 | | `div[nz-result-extra]` | 操作区域 | --- --- category: Components title: Statistic subtitle: 统计 type: 数据展示 cover: 'https://gw.alipayobjects.com/zos/antfincdn/rcBNhLBrKbE/Statistic.svg' description: 展示统计数字。 --- ## 何时使用 - 当需要突出某个或某组数字时。 - 当需要展示带描述的统计类数据时使用。 ## API ### nz-statistic | 参数 | 说明 | 类型 | 默认值 | | ------------------- | -------------- | ---------------------------------------------- | ------- | | `[nzPrefix]` | 设置数值的前缀 | `string \| TemplateRef` | - | | `[nzSuffix]` | 设置数值的后缀 | `string \| TemplateRef` | - | | `[nzTitle]` | 数值的标题 | `string \| TemplateRef` | - | | `[nzValue]` | 数值内容 | `string \| number` | - | | `[nzValueStyle]` | 设置数值的样式 | `Object` | - | | `[nzValueTemplate]` | 自定义数值展示 | `TemplateRef<{ $implicit: string \| number }>` | - | | `[nzLoading]` | 数值是否加载中 | `boolean` | `false` | ### nz-countdown | 参数 | 说明 | 类型 | 默认值 | | --------------------- | ---------------------- | ------------------------------------ | ------------ | | `[nzFormat]` | 格式化倒计时展示 | `string` | `'HH:mm:ss'` | | `[nzPrefix]` | 设置数值的前缀 | `string \| TemplateRef` | - | | `[nzSuffix]` | 设置数值的后缀 | `string \| TemplateRef` | - | | `[nzTitle]` | 数值的标题 | `string \| TemplateRef` | - | | `[nzValue]` | 时间戳格式的目标时间 | `string \| number` | - | | `[nzValueTemplate]` | 自定义时间展示 | `TemplateRef<{ $implicit: number }>` | - | | `(nzCountdownFinish)` | 当倒计时完成时发出事件 | `void` | - | ### nzFormat | 占位符 | 描述 | | ------ | ---- | | `Y` | 年 | | `M` | 月 | | `D` | 日 | | `H` | 时 | | `m` | 分 | | `s` | 秒 | | `S` | 毫秒 | --- --- category: Components type: 数据录入 title: AutoComplete subtitle: 自动完成 cover: 'https://gw.alipayobjects.com/zos/alicdn/qtJm4yt45/AutoComplete.svg' description: 输入框自动完成功能。 --- ## 何时使用 需要自动完成时。 ## API ```html ``` ```html 12345 23456 34567 ``` ### [nzAutocomplete] | 属性 | 说明 | 类型 | 默认值 | | ------------------ | ---------------------------- | ------------------------- | ------ | | `[nzAutocomplete]` | 用于绑定 nzAutocomplete 组件 | `NzAutocompleteComponent` | - | ### nz-autocomplete | 属性 | 说明 | 类型 | 默认值 | | ------------------------------ | --------------------------------------------------------------------------------------------- | ------------------------------- | ------------------------------- | | `[nzBackfill]` | 使用键盘选择选项的时候,会把当前高亮项的值即时回填到输入框中 | `boolean` | `false` | | `[nzDataSource]` | 自动完成的数据源 | `AutocompleteDataSource` | - | | `[nzDefaultActiveFirstOption]` | 是否默认高亮第一个选项。 | `boolean` | `true` | | `[nzWidth]` | 自定义宽度单位 px | `number` | 触发元素宽度 | | `[nzOverlayClassName]` | 下拉根元素的类名称 | `string` | - | | `[nzOverlayStyle]` | 下拉根元素的样式 | `object` | - | | `[compareWith]` | 与 [SelectControlValueAccessor](https://angular.cn/api/forms/SelectControlValueAccessor) 相同 | `(o1: any, o2: any) => boolean` | `(o1: any, o2: any) => o1===o2` | ### nz-auto-option | 属性 | 说明 | 类型 | 默认值 | | -------------- | --------------------------- | --------- | ------- | | `[nzValue]` | 绑定到触发元素 ngModel 的值 | `any` | - | | `[nzLabel]` | 填入触发元素显示的值 | `string` | - | | `[nzDisabled]` | 禁用选项 | `boolean` | `false` | ## FAQ ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components subtitle: 表单 type: 数据录入 cols: 1 title: Form cover: 'https://gw.alipayobjects.com/zos/alicdn/ORmcdeaoO/Form.svg' description: 高性能表单控件,自带数据域管理。包含数据录入、校验以及对应样式。 --- ## 何时使用 - 用于创建一个实体或收集信息。 - 需要对输入的数据类型进行校验时。 > 该组件需要与 [Angular 表单](https://angular.cn/guide/forms) > 结合使用,根据需要可以自由选择 [响应式表单](https://angular.cn/guide/forms/reactive-forms) > 或 [模板驱动表单](https://angular.cn/guide/forms/template-driven-forms)。 > 使用该组件前请确保您已经阅读并掌握了 [Angular 表单](https://angular.cn/guide/forms) 的使用方式。 ## 表单 我们提供了以下三种排列方式: - 水平排列:标签和表单控件水平排列;(默认) - 垂直排列:标签和表单控件上下垂直排列; - 行内排列:表单项水平行内排列。 ### 表单项 nz-form-item 表单项用于区分表单中不同的区域,包含表单域和表单标签(可选)。 ### 表单标签 nz-form-label 用于标示当前表单项的内容,可选。 ### 表单域 nz-form-control 表单一定会包含表单域,表单域可以是输入控件,标准表单域,标签,下拉菜单,文本域等。 ```html
      E-mail
      ``` ## API ### [nz-form] | 参数 | 说明 | 类型 | 默认值 | 全局配置 | 版本 | | --------------------- | ----------------------------------------------------------------------------------- | -------------------------------------------------------- | ----------------------------------------------- | -------- | ------ | | `[nzLayout]` | 表单布局 | `'horizontal' \| 'vertical' \| 'inline'` | `'horizontal'` | | | | `[nzAutoTips]` | 配置 `nz-form-control` 的 `[nzAutoTips]` 的默认值, 具体用法请参考示例:**自动提示** | `Record>` | `{}` | ✅ | | | `[nzDisableAutoTips]` | 配置 `nz-form-control` 的 `[nzDisableAutoTips]` 的默认值 | `boolean` | `false` | ✅ | | | `[nzNoColon]` | 配置 `nz-form-label` 的 `[nzNoColon]` 的默认值 | `boolean` | `false` | ✅ | | | `[nzTooltipIcon]` | 配置 `nz-form-label` 的 `[nzTooltipIcon]` 的默认值 | `string \| { type: string; theme: ThemeType }` | `{ type: 'question-circle', theme: 'outline' }` | ✅ | | | `[nzLabelAlign]` | 配置 `nz-form-label` 的 `[nzLabelAlign]` 的默认值 | `'left' \| 'right'` | `'right'` | | | | `[nzLabelWrap]` | 配置 `nz-form-label` 的 `[nzLabelWrap]` 的默认值 | `boolean` | `false` | | | | `[nzRequiredMark]` | 必填标记样式。可使用必填标记或可选标记。 | `NzRequiredMark` | `true` | | 20.4.0 | | `[nzSize]` | 设置字段组件的尺寸 | `small` \| `default` \| `large` | - | | 21.1.0 | | `[nzVariant]` | 设置表单样式 | `'outlined' \| 'filled' \| 'borderless' \| 'underlined'` | `'outlined'` | | 21.2.0 | ### nz-form-item 表单项用于区分表单中不同的区域,包含表单域和表单标签(可选)。 > 所有 [nz-row](/components/grid/zh) 的参数在 `nz-form-item` 上均可直接使用。 ### nz-form-label 用于标示当前表单项的内容,可选。 > 所有 [nz-col](/components/grid/zh) 的参数在 `nz-form-label` 上均可直接使用。 | 参数 | 说明 | 类型 | 默认值 | | ------------------ | ---------------------------- | ----------------------------- | --------- | | `[nzRequired]` | 当前项是否为必填,仅影响样式 | `boolean` | `false` | | `[nzNoColon]` | 是否不显示 label 后面的冒号 | `boolean` | `false` | | `[nzFor]` | label 标签的 for 属性 | `string` | - | | `[nzTooltipTitle]` | 配置提示信息 | `string \| TemplateRef` | - | | `[nzTooltipIcon]` | 配置提示信息的图标 | `string \| NzFormTooltipIcon` | - | | `[nzLabelAlign]` | 标签文本对齐方式 | `'left' \| 'right'` | `'right'` | | `[nzLabelWrap]` | label 标签的文本换行方式 | `boolean` | `false` | ### nz-form-control > 注意:由于 Angular Form 目前提供的[状态变更订阅](https://github.com/angular/angular/issues/10887)不完整。手动更改表单状态时,例如 > `markAsDirty` 后,需要执行 `updateValueAndValidity` 通知 `nz-form-control` 进行状态变更。 表单一定会包含表单域,表单域可以是输入控件,标准表单域,标签,下拉菜单,文本域等。 > 所有 [nz-col](/components/grid/zh) 的参数在 `nz-form-control` 上均可直接使用。 | 参数 | 说明 | 类型 | 默认值 | | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------- | | `[nzValidateStatus]` | 会根据传入的 `FormControl` 或 `NgModel` 自动生成校验状态,也可以直接指定状态,不传入时默认值为 `nz-form-control` 中包裹的第一个 `FormControl` 或 `NgModel` | `'success' \| 'warning' \| 'error' \| 'validating' \| FormControl \| NgModel` | `nz-form-control` 中包裹的第一个 `FormControl` 或 `NgModel` | | `[nzHasFeedback]` | 配合 `nzValidateStatus` 属性使用,展示校验状态图标 | `boolean` | `false` | | `[nzExtra]` | 用于显示表单额外提示信息 | `string \| TemplateRef` | - | | `[nzSuccessTip]` | 校验状态 success 时提示信息 | `string \| TemplateRef<{ $implicit: FormControl \| NgModel }>` | - | | `[nzWarningTip]` | 校验状态 warning 时提示信息 | `string \| TemplateRef<{ $implicit: FormControl \| NgModel }>` | - | | `[nzErrorTip]` | 校验状态 error 时提示信息 | `string \| TemplateRef<{ $implicit: FormControl \| NgModel }>` | - | | `[nzValidatingTip]` | 正在校验时提示信息 | `string \| TemplateRef<{ $implicit: FormControl \| NgModel }>` | - | | `[nzAutoTips]` | 配置提示的对象, 具体用法请参考示例:**自动提示** | `Record>` | - | | `[nzDisableAutoTips]` | 禁用自动提示 | `boolean` | - | ### nz-form-split 用于显示分隔符 `-` ### nz-form-text 在 `nz-form-control` 中直接显示文本 --- --- category: Components cols: 1 type: 数据展示 title: Table subtitle: 表格 cover: 'https://gw.alipayobjects.com/zos/alicdn/f-SbcX2Lx/Table.svg' description: 展示行列数据。 --- ## 何时使用 - 当有大量结构化的数据需要展现时; - 当需要对数据进行排序、搜索、分页、自定义操作等复杂行为时。 ## 如何使用 Table 组件同时具备了易用性和高度可定制性 ### 高度定制 在 `nz-table` 组件中完整的暴露了 [`W3C标准 `](https://www.w3.org/TR/html401/struct/tables.html) 的所有组成部分,你可以像使用 `table` 元素一样使用 `nz-table` ,根据依据业务需求,使用者可以自由的控制任何一个部分的样式、内容、逻辑和事件绑定。 ### 组件增强 在 `nz-table`, `thead`, `th`, `td` 等多个暴露的元素上,组件提供了增强语法,经过配置之后可以很方便的实现多选、过滤、排序、固定列、固定表头、服务端分页等功能。 ### 数据处理 将数据传入`[nzData]`,经过组件处理之后(包括分页、排序、筛选等),通过 [模板变量](https://angular.cn/guide/templates/template-statements#statement-context) 获取当前展示表格部分的数据,使用 `*ngFor` 依据需求将数据渲染。 ```html ``` ## API ### nz-table | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | --------------------------- | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------ | -------- | | `[nzData]` | 数据数组 | `T[]` | - | | `[nzFrontPagination]` | 是否在前端对数据进行分页,如果在服务器分页数据或者需要在前端显示全部数据时传入 false | `boolean` | `true` | | `[nzTotal]` | 当前总数据,在服务器渲染时需要传入 | `number` | - | | `[nzCustomColumn]` | 控制表格列的展示与排序,(开启后 `nzWidthConfig` 和 `th` 的 `[nzWidth]` 将不生效) | `NzCustomColumn[]` | - | | `[nzPageIndex]` | 当前页码,可双向绑定 | `number` | - | | `[nzPageSize]` | 每页展示多少数据,可双向绑定 | `number` | - | | `[nzShowPagination]` | 是否显示分页器 | `boolean` | `true` | | `[nzPaginationPosition]` | 指定分页显示的位置 | `'top' \| 'bottom' \| 'both'` | `'bottom'` | | `[nzPaginationType]` | 指定分页显示的尺寸 | `'default' \| 'small'` | `'default'` | | `[nzBordered]` | 是否展示外边框和列边框 | `boolean` | `false` | ✅ | | `[nzOuterBordered]` | 是否显示外边框 | `boolean` | `false` | - | | `[nzWidthConfig]` | 表头分组时指定每列宽度,与 `th` 的 `[nzWidth]` 不可混用 | `string[]` | `[]` | | `[nzSize]` | 正常或迷你类型 | `'middle' \| 'small' \| 'default'` | `'default'` | ✅ | | `[nzLoading]` | 页面是否加载中 | `boolean` | `false` | | `[nzLoadingIndicator]` | 加载指示符 | `TemplateRef` | - | ✅ | | `[nzLoadingDelay]` | 延迟显示加载效果的时间(防止闪烁) | `number` | `0` | | `[nzScroll]` | 横向或纵向支持滚动,也可用于指定滚动区域的宽高度:`{ x: "300px", y: "300px" }` | `object` | - | | `[nzTitle]` | 表格标题 | `string \| TemplateRef` | - | | `[nzFooter]` | 表格尾部 | `string \| TemplateRef` | - | | `[nzNoResult]` | 无数据时显示内容 | `string \| TemplateRef` | - | | `[nzPageSizeOptions]` | 页数选择器可选值 | `number[]` | `[ 10, 20, 30, 40, 50 ]` | | `[nzShowQuickJumper]` | 是否可以快速跳转至某页 | `boolean` | `false` | ✅ | | `[nzShowSizeChanger]` | 是否可以改变 `nzPageSize` | `boolean` | `false` | ✅ | | `[nzShowTotal]` | 用于显示数据总量和当前数据范围,用法参照 Pagination 组件 | `TemplateRef<{ $implicit: number, range: [ number, number ] }>` | - | | `[nzItemRender]` | 用于自定义页码的结构,用法参照 Pagination 组件 | `TemplateRef<{ $implicit: 'page' \| 'prev' \| 'next', page: number }>` | - | | `[nzHideOnSinglePage]` | 只有一页时是否隐藏分页器 | `boolean` | `false` | ✅ | | `[nzSimple]` | 当添加该属性时,显示为简单分页 | `boolean` | - | ✅ | | `[nzTemplateMode]` | 模板模式,无需将数据传递给 `nzData` | `boolean` | `false` | | `[nzVirtualItemSize]` | 虚拟滚动时每一列的高度,与 [cdk itemSize](https://material.angular.io/cdk/scrolling/api) 相同 | `number` | `0` | | `[nzVirtualMaxBufferPx]` | 缓冲区最大像素高度,与 [cdk maxBufferPx](https://material.angular.io/cdk/scrolling/api) 相同 | `number` | `200` | | `[nzVirtualMinBufferPx]` | 缓冲区最小像素高度,低于该值时将加载新结构,与 [cdk minBufferPx](https://material.angular.io/cdk/scrolling/api) 相同 | `number` | `100` | | `[nzVirtualForTrackBy]` | 虚拟滚动数据 `TrackByFunction` 函数 | `TrackByFunction` | - | | `(nzPageIndexChange)` | 当前页码改变时的回调函数 | `EventEmitter` | - | | `(nzPageSizeChange)` | 页数改变时的回调函数 | `EventEmitter` | - | | `(nzCurrentPageDataChange)` | 当前页面展示数据改变的回调函数 | `EventEmitter` | - | | `(nzCustomColumnChange)` | 当表格重新排序后的回调 | `EventEmitter` | - | | `(nzQueryParams)` | 当服务端分页、筛选、排序时,用于获得参数,具体见示例 | `EventEmitter` | - | ### th 勾选属性 | 参数 | 说明 | 类型 | 默认值 | | ------------------- | ------------------------------- | ----------------------- | ------ | | `[nzShowCheckbox]` | 是否添加 checkbox | `boolean` | - | | `[nzDisabled]` | checkbox 是否禁用 | `boolean` | - | | `[nzIndeterminate]` | checkbox indeterminate 状态 | `boolean` | - | | `[nzLabel]` | checkbox 的可访问性标签 | `string` | - | | `[nzChecked]` | checkbox 是否被选中,可双向绑定 | `boolean` | - | | `(nzCheckedChange)` | 选中的回调 | `EventEmitter` | - | 下拉选择属性 | 参数 | 说明 | 类型 | 默认值 | | ---------------------- | ------------------------------------------- | ---------------------------------------- | ------ | | `[nzShowRowSelection]` | 是否显示下拉选择 | `boolean` | - | | `[nzSelections]` | 下拉选择的内容 `text` 及回调函数 `onSelect` | `Array<{ text: string, onSelect: any }>` | - | 排序属性 | 参数 | 说明 | 类型 | 默认值 | | --------------------- | ----------------------------------------------------------------------------------------- | --------------------------------------------- | ----------------------------- | | `[nzShowSort]` | 是否显示排序 | `boolean` | - | | `[nzSortFn]` | 排序函数,前端排序使用一个函数(参考 Array.sort 的 compareFunction),服务端排序时传入 true | `NzTableSortFn \| boolean` | - | | `[nzSortDirections]` | 支持的排序方式,取值为 `'ascend'`, `'descend'`, `null` | `Array<'ascend' \| 'descend' \| null>` | `['ascend', 'descend', null]` | | `[nzSortOrder]` | 当前排序状态,可双向绑定 | `'ascend' \| 'descend' \| null` | null | | `(nzSortOrderChange)` | 排序状态改变回调 | `EventEmitter<'ascend' \| 'descend' \| null>` | - | 过滤属性 | 参数 | 说明 | 类型 | 默认值 | | ----------------------- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------- | --------- | | `[nzShowFilter]` | 是否显示过滤 | `boolean` | - | | `[nzFilterFn]` | 前端排序时,确定筛选的运行函数,服务端排序时,传入 true | `NzTableFilterFn \| boolean` | - | | `[noDataVirtualHeight]` | 没有数据时内部滚动的高度,如果没有传递任何内容,则使用默认值。 | `string` | `'182px'` | | `[nzFilters]` | 过滤器内容, 显示数据 `text`,回调函数传出 `value`,设置 `byDefault` 以默认应用过滤规则 | `Array<{ text: string; value: any; byDefault?: boolean }>` | - | | `[nzFilterMultiple]` | 是否为多选过滤器 | `boolean` | `true` | | `(nzFilterChange)` | 过滤器内容选择的 value 数据回调 | `EventEmitter` | - | 样式属性 | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ---------------------------------------------------------------------------------------------- | ------------------------------- | ------- | | `[nzWidth]` | 指定该列宽度,表头未分组时可用 | `string` | - | | `[nzLeft]` | 左侧距离,用于固定左侧列,当为 `true` 时自动计算,为 `false` 时停止固定 | `string \| boolean` | `false` | | `[nzRight]` | 右侧距离,用于固定右侧列,当为 `true` 时自动计算,为 `false` 时停止固定 | `string \| boolean` | `false` | | `[nzAlign]` | 设置列内容的对齐方式 | `'left' \| 'right' \| 'center'` | - | | `[nzCellControl]` | 设置列的位置,该值为 `NzCustomColumn` 类型中 `value` 字段的值 | `string` | - | | `[nzBreakWord]` | 是否折行显示 | `boolean` | `false` | | `[nzEllipsis]` | 超过宽度将自动省略,暂不支持和排序筛选一起使用。仅当表格布局将为 `nzTableLayout="fixed"`时可用 | `boolean` | `false` | | `[colSpan]` | 每单元格中扩展列的数量 | `number` | `null` | | `[rowSpan]` | 每单元格中扩展行的数量 | `number` | `null` | 其他 | 参数 | 说明 | 类型 | 默认值 | | --------------- | -------------------------------------- | -------- | ------ | | `[nzColumnKey]` | 当前列的 key,用于服务端筛选和排序使用 | `string` | - | ### td 勾选属性 | 参数 | 说明 | 类型 | 默认值 | | ------------------- | ------------------------------- | ----------------------- | ------ | | `[nzShowCheckbox]` | 是否添加 checkbox | `boolean` | - | | `[nzDisabled]` | checkbox 是否禁用 | `boolean` | - | | `[nzIndeterminate]` | checkbox indeterminate 状态 | `boolean` | - | | `[nzLabel]` | checkbox 的可访问性标签 | `string` | - | | `[nzChecked]` | checkbox 是否被选中,可双向绑定 | `boolean` | - | | `(nzCheckedChange)` | 选中的回调 | `EventEmitter` | - | | `[colSpan]` | 单元格可横跨的列数 | `number` | `null` | | `[rowSpan]` | 单元格可横跨的行数 | `number` | `null` | 展开属性 | 参数 | 说明 | 类型 | 默认值 | | ------------------ | ---------------------------- | ----------------------- | ------ | | `[nzShowExpand]` | 是否显示展开按钮 | `boolean` | - | | `[nzExpand]` | 当前展开按钮状态,可双向绑定 | `boolean` | - | | `[nzExpandIcon]` | 自定义展开图标 | `TemplateRef` | - | | `(nzExpandChange)` | 当前展开按钮状态改变回调函数 | `EventEmitter` | - | 样式属性 | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ---------------------------------------------------------------------------------------------- | ------------------------------- | ------- | | `[nzLeft]` | 左侧距离,用于固定左侧列,当为 `true` 时自动计算,为 `false` 时停止固定 | `string \| boolean` | `false` | | `[nzRight]` | 右侧距离,用于固定右侧列,当为 `true` 时自动计算,为 `false` 时停止固定 | `string \| boolean` | `false` | | `[nzAlign]` | 设置列内容的对齐方式 | `'left' \| 'right' \| 'center'` | - | | `[nzCellControl]` | 设置列的位置,该值为 `NzCustomColumn` 类型中 `value` 字段的值 | `string` | - | | `[nzBreakWord]` | 是否折行显示 | `boolean` | `false` | | `[nzEllipsis]` | 超过宽度将自动省略,暂不支持和排序筛选一起使用。仅当表格布局将为 `nzTableLayout="fixed"`时可用 | `boolean` | `false` | 其他 | 参数 | 说明 | 类型 | 默认值 | | ---------------- | -------------------------------------------- | -------- | ------ | | `[nzIndentSize]` | 展示树形数据时,每层缩进的宽度,以 px 为单位 | `number` | - | ### thead | 参数 | 说明 | 类型 | 默认值 | | --------------------- | --------------------------------------------------------- | --------------------------------------------------------------------- | ------ | | `(nzSortOrderChange)` | 排序状态改变回调,需要与 `th` 上的 `nzColumnKey` 同时使用 | `EventEmitter<{ key: string, value: 'descend' \| 'ascend' \| null }>` | - | ### tr | 参数 | 说明 | 类型 | 默认值 | | ------------ | ---------------------------------------------------- | --------- | ------ | | `[nzExpand]` | 当前列是否展开,与 `td` 上的 `nzExpand` 属性配合使用 | `boolean` | - | ### tfoot | 参数 | 说明 | 类型 | 默认值 | | ------------- | ------------------------------------------ | ------------------------------ | ------- | | `[nzSummary]` | 总结栏 | `boolean` | - | | `[nzFixed]` | 总结栏是否固定,与 `nzScroll` 属性配合使用 | `boolean \| 'top' \| 'bottom'` | `false` | ### nz-filter-trigger 用于自定义筛选功能 | 参数 | 说明 | 类型 | 默认值 | | ------------------- | ---------------------------------------- | ------------------------- | ------- | | `[nzDropdownMenu]` | Dropdown 下拉菜单组件 | `NzDropdownMenuComponent` | - | | `[nzVisible]` | 菜单是否显示,可双向绑定 | `boolean` | - | | `[nzActive]` | 是否激活选中图标效果 | `boolean` | `false` | | `[nzHasBackdrop]` | 是否附带背景板 | `boolean` | `false` | | `(nzVisibleChange)` | 菜单显示状态改变时调用,参数为 nzVisible | `EventEmitter` | - | ### [nz-virtual-scroll] 虚拟滚动时配合 `ng-template` 使用, 格式为: `TemplateRef<{ $implicit: T, index: number }>`。 ## 注意 为了获得更好的性能,NG-ZORRO 所有组件都运行在 [OnPush](https://angular.cn/guide/components/advanced-configuration#changedetectionstrategy) 模式下,这意味着对 `@Input()` 数据的 mutate 将不会生效,请使用 immutable 方式操作数组或者对象。 ```typescript // 增加数据 this.dataSet = [ ...this.dataSet, { key: `${this.i}`, name: `Edward King ${this.i}`, age: '32', address: `London, Park Lane no. ${this.i}` } ]; // 删除数据 this.dataSet = this.dataSet.filter(d => d.key !== i); ``` 开发者也可以使用 [immer](https://immerjs.github.io/immer/docs/introduction) 获得更好的操作体验。 --- --- category: Components subtitle: 评分 type: 数据录入 title: Rate cover: 'https://gw.alipayobjects.com/zos/alicdn/R5uiIWmxe/Rate.svg' description: 用于对事物进行评分操作。 --- ## 何时使用 - 对评价进行展示。 - 对事物进行快速的评级操作。 ## API ### nz-rate | 属性 | 说明 | 类型 | 默认值 | 支持全局配置 | | ------------------- | ------------------------ | ----------------------------- | --------------------------- | ------------ | | `[nzAllowClear]` | 是否允许再次点击后清除 | `boolean` | `true` | ✅ | | `[nzAllowHalf]` | 是否允许半选 | `boolean` | `false` | ✅ | | `[nzAutoFocus]` | 自动获取焦点 | `boolean` | `false` | | `[nzCharacter]` | 自定义字符 | `TemplateRef` | `` | | `[nzCount]` | star 总数 | `number` | `5` | | `[nzDisabled]` | 只读,无法进行交互 | `boolean` | `false` | | `[nzTooltips]` | 自定义每项的提示信息 | `string[]` | `[]` | | `[ngModel]` | 当前数,可以双向绑定 | `number` | `0` | | `(ngModelChange)` | 当前数改变时的回调 | `EventEmitter` | - | | `(nzOnBlur)` | 失去焦点时的回调 | `EventEmitter` | - | | `(nzOnFocus)` | 获取焦点时的回调 | `EventEmitter` | - | | `(nzOnHoverChange)` | 鼠标经过时数值变化的回调 | `EventEmitter` | - | | `(nzOnKeyDown)` | 按键回调 | `EventEmitter` | - | #### 方法 | 名称 | 描述 | | --------- | -------- | | `blur()` | 移除焦点 | | `focus()` | 获取焦点 | --- --- category: Components type: 数据展示 title: Comment subtitle: 评论 cols: 1 cover: 'https://gw.alipayobjects.com/zos/alicdn/ILhxpGzBO/Comment.svg' description: 对网站内容的反馈、评价和讨论。 --- ## 何时使用 评论组件可用于对事物的讨论,例如页面、博客文章、问题等等。 ## API ### nz-comment | Property | Description | Type | Default | | -------------- | -------------- | ----------------------------- | ------- | | `[nzAuthor]` | 显示评论的作者 | `string \| TemplateRef` | - | | `[nzDatetime]` | 展示时间描述 | `string \| TemplateRef` | - | ### [nz-comment-avatar] 要显示为评论头像的元素。 ### nz-comment-content 评论的主要内容。 ### nz-comment-action 在评论内容下面呈现的操作项。 --- --- category: Components type: 布局 title: Resizable subtitle: 调整尺寸 cols: 1 experimental: true description: 调整元素尺寸。 --- ## 何时使用 当你想调整元素尺寸时. - 支持释放前预览提高性能 - 支持栅格系统 - 支持自定义调整手柄和预览样式 ### 引入样式 ```less @import 'node_modules/ng-zorro-antd/resizable/style/entry.less'; ``` ## API ### [nz-resizable] 声明在需要调整尺寸的元素上,元素 `position` 属性必须为 `'relative' | 'absolute' | 'fixed' |'sticky'` 之一,默认会自动设置为 `'relative'`。 ```ts interface NzResizeEvent { width?: number; height?: number; col?: number; direction?: NzResizeDirection; mouseEvent?: MouseEvent; } ``` | 参数 | 说明 | 类型 | 默认值 | | --------------------- | -------------------------- | ------------------------------------------------- | -------- | | `[nzBounds]` | 调整尺寸的边界 | `'window' \| 'parent' \| ElementRef` | `parent` | | `[nzMaxHeight]` | 最大高度(超过边界部分忽略) | `number` | - | | `[nzMaxWidth]` | 最大宽度(超过边界部分忽略) | `number` | - | | `[nzMinHeight]` | 最小高度 | `number` | `40` | | `[nzMinWidth]` | 最小宽度 | `number` | `40` | | `[nzGridColumnCount]` | 栅格列数(-1 为不栅格) | `number` | `-1` | | `[nzMaxColumn]` | 栅格最大列数 | `number` | - | | `[nzMinColumn]` | 栅格最小列数 | `number` | - | | `[nzLockAspectRatio]` | 锁定宽高比 | `boolean` | `false` | | `[nzPreview]` | 开启预览 | `boolean` | `false` | | `[nzDisabled]` | 禁用 | `boolean` | `false` | | `(nzResize)` | 调整尺寸时的事件 | `EventEmitter` | - | | `(nzResizeStart)` | 开始调整尺寸时的事件 | `EventEmitter` | - | | `(nzResizeEnd)` | 结束调整尺寸时的事件 | `EventEmitter` | - | ### nz-resize-handle 定义调整手柄及方向。 ```ts type NzResizeDirection = 'top' | 'right' | 'bottom' | 'left' | 'topRight' | 'bottomRight' | 'bottomLeft' | 'topLeft'; type NzCursorType = 'window' | 'grid'; ``` | 参数 | 说明 | 类型 | 默认值 | | ---------------- | -------------- | ------------------- | --------------- | | `[nzDirection]` | 调整方向 | `NzResizeDirection` | `'bottomRight'` | | `[nzCursorType]` | 手柄的光标类型 | `NzCursorType` | `'window'` | ### nz-resize-handles 定义调整手柄的快捷组件。 ```ts interface NzResizeHandleOption { direction: NzResizeDirection; cursorType: NzCursorType; } ``` | 参数 | 说明 | 类型 | 默认值 | | ---------------- | ------------------------ | ----------------------------------------------- | -------- | | `[nzDirections]` | 需要的手柄方向或手柄选项 | `[]` | 所有方向 | ### 样式 组件样式只包含了必要的位置属性和简单的样式,你可以通过覆写下列类名自定义样式。 - `.nz-resizable` `nz-resizable` 组件命名空间 - `.nz-resizable-resizing` 正在调整尺寸时被添加到 `nz-resizable` 上 - `.nz-resizable-preview` 开启预览时幽灵元素的类名 - `.nz-resizable-handle-box-hover` 当鼠标悬停在 `nz-resizable` 上时被添加到 ` nz-resize-handle` 上。 - `.nz-resizable-handle` 调整手柄命名空间及各方向类名 - `.nz-resizable-handle-top` - `.nz-resizable-handle-left` - `.nz-resizable-handle-bottom` - `.nz-resizable-handle-right` - `.nz-resizable-handle-topRight` - `.nz-resizable-handle-topLeft` - `.nz-resizable-handle-bottomRight` - `.nz-resizable-handle-bottomLeft` - `.nz-resizable-handle-cursor-type` 手柄的光标类型命名空间 - `.nz-resizable-handle-cursor-type-window` - `.nz-resizable-handle-cursor-type-grid` --- --- category: Components subtitle: 警告提示 type: 反馈 title: Alert cover: 'https://gw.alipayobjects.com/zos/alicdn/8emPa3fjl/Alert.svg' description: 警告提示,展现需要关注的信息。 --- ## 何时使用 - 当某个页面需要向用户显示警告的信息时。 - 非浮层的静态展现形式,始终展现,不会自动消失,用户可以点击关闭。 ## API ### nz-alert | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | ----------------- | --------------------------------------------------------- | --------------------------------------------- | -------- | -------- | | `[nzBanner]` | 是否用作顶部公告 | `boolean` | `false` | | `[nzAction]` | 自定义操作项 | `string \| TemplateRef` | - | | `[nzCloseable]` | 默认不显示关闭按钮 | `boolean` | - | ✅ | | `[nzCloseText]` | 自定义关闭按钮 | `string \| TemplateRef` | - | | `[nzDescription]` | 警告提示的辅助性文字介绍 | `string \| TemplateRef` | - | | `[nzMessage]` | 警告提示内容 | `string \| TemplateRef` | - | | `[nzShowIcon]` | 是否显示辅助图标,`nzBanner` 模式下默认值为 `true` | `boolean` | `false` | ✅ | | `[nzIconType]` | 自定义图标类型,`nzShowIcon` 为 `true` 时有效 | `string` | - | | `[nzType]` | 指定警告提示的样式,`nzBanner` 模式下默认值为 `'warning'` | `'success' \| 'info' \| 'warning' \| 'error'` | `'info'` | | `[nzIcon]` | 自定义图标,showIcon 为 true 时有效 | `string \| TemplateRef` | - | | `(nzOnClose)` | 关闭时触发的回调函数 | `EventEmitter` | - | ### nz-alert-marquee 将 `nz-alert-marquee` 作为 `[nzMessage]` 的模板内容使用,可在警告提示中实现滚动走马灯效果。 | 参数 | 说明 | 类型 | 默认值 | | ------------------ | ----------------------------------- | --------- | ------- | | `[nzPauseOnHover]` | 鼠标悬停时是否暂停滚动动画 | `boolean` | `false` | | `[nzSpeed]` | 滚动速度(像素/秒),值越大滚动越快 | `number` | `50` | --- --- category: Components type: 数据展示 title: Carousel subtitle: 走马灯 cover: 'https://gw.alipayobjects.com/zos/antfincdn/%24C9tmj978R/Carousel.svg' description: 一组轮播的区域。 --- ## 何时使用 - 当有一组平级的内容。 - 当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。 - 常用于一组图片或卡片轮播。 ## API ### nz-carousel | 参数 | 说明 | 类型 | 默认值 | 支持全局配置 | 版本 | | ------------------- | -------------------------------------------------- | -------------------------------------------- | ----------- | ------------ | ------ | | `[nzAutoPlay]` | 是否自动切换 | `boolean` | `false` | ✅ | | `[nzAutoPlaySpeed]` | 切换时间(毫秒),当设置为 0 时不切换 | `number` | `3000` | ✅ | | `[nzDotRender]` | Dot 渲染模板 | `TemplateRef<{ $implicit: number }>` | - | | `[nzDotPosition]` | 面板指示点位置,可选 `top` `bottom` `left` `right` | `'top' \| 'right' \| 'bottom' \| 'left'` | `'bottom'` | ✅ | | `[nzDots]` | 是否显示面板指示点 | `boolean` | `true` | ✅ | | `[nzEffect]` | 动画效果函数,可取 `scrollx`, `fade` | `'scrollx' \| 'fade'` | `'scrollx'` | ✅ | | `[nzEnableSwipe]` | 是否支持手势划动切换 | `boolean` | `true` | ✅ | | `[nzLoop]` | 是否支持循环 | `boolean` | `true` | ✅ | | `[nzArrows]` | 是否显示箭头按钮 | `boolean` | `false` | - | 20.3.0 | | `(nzAfterChange)` | 切换面板的回调 | `EventEmitter` | - | | `(nzBeforeChange)` | 切换面板的回调 | `EventEmitter<{ from: number; to: number }>` | - | #### 方法 | 名称 | 描述 | | ------------------- | -------------- | | `goTo(slideNumber)` | 切换到指定面板 | | `next()` | 切换到下一面板 | | `pre()` | 切换到上一面板 | ### InjectionToken | Token | 说明 | 参数 | 默认值 | | ------------------------------- | ------------------------ | -------------------------------- | ------ | | `NZ_CAROUSEL_CUSTOM_STRATEGIES` | 提供用户自定义的切换效果 | `CarouselStrategyRegistryItem[]` | - | ### 自定义切换效果 你可以提供自定义的切换效果,切换效果应当继承 `NzCarouselBaseStrategy` 类(默认的两种切换效果同样基于该类)。 --- --- category: Components subtitle: 输入框 type: 数据录入 title: Input tag: updated cover: 'https://gw.alipayobjects.com/zos/alicdn/xS9YEJhfe/Input.svg' description: 通过鼠标或键盘输入内容,是最基础的表单域的包装。 --- ## 何时使用 - 需要用户输入表单域内容时。 - 提供组合型输入框,带搜索的输入框,还可以进行大小选择。 ## API ### [nz-input] `[nz-input]` 可以使用所有的 W3C 标准下的所有 [使用方式](https://www.w3schools.com/tags/tag_input.asp) 和 Angular 对 input 的全部额外功能支持。 | 参数 | 说明 | 类型 | 默认值 | 版本 | | ------------------ | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ------------ | ------ | | `[nzSize]` | 控件大小。注:标准表单内的输入框大小限制为 `large` | `'large' \| 'small' \| 'default'` | `'default'` | | ~~`[nzAutosize]`~~ | ~~只可以用于 `textarea`,自适应内容高度,可设置为 `boolean` 或对象:`{ minRows: 2, maxRows: 6 }`~~ | ~~`boolean \| { minRows: number, maxRows: number }`~~ | ~~`false`~~ | | `[nzVariant]` | 形态变体 | `'outlined' \| 'borderless' \| 'filled' \| 'underlined'` | `'outlined'` | 20.0.0 | | `[nzStatus]` | 设置校验状态 | `'error' \| 'warning'` | - | #### 方法 通过 `ViewChild` 等方法获得实例后调用 | 名称 | 描述 | 参数 | | -------------- | -------- | ---------------------------------------------------------------------------- | | focus(option?) | 获取焦点 | `(option?: { preventScroll?: boolean, cursor?: 'start' \| 'end' \| 'all' })` | | blur() | 移除焦点 | - | ### nz-input-wrapper 当需要为 `[nz-input]` 添加额外功能时使用。 | 参数 | 说明 | 类型 | 默认值 | 版本 | | ----------------- | ---------------------------- | ------------------------ | ------- | ------ | | `[nzAddonBefore]` | 带标签的 input,设置前置标签 | `string` | - | | `[nzAddonAfter]` | 带标签的 input,设置后置标签 | `string` | - | | `[nzPrefix]` | 带有前缀图标的 input | `string` | - | | `[nzSuffix]` | 带有后缀图标的 input | `string` | - | | `[nzAllowClear]` | 可以点击清除图标删除内容 | `boolean` | `false` | | `[nzShowCount]` | 是否显示字符计数 | `boolean` | `false` | 21.2.0 | | `[nzCount]` | 自定义字符计数配置 | `NzCountConfig` | - | 21.2.0 | | `(nzClear)` | 点击清除图标时触发 | `OutputEmitterRef` | - | #### NzCountConfig ```ts export interface NzCountConfig { // 最大字符数,超出后标红但不会截断 max?: number; // 自定义字符计数策略 strategy?: (value: string) => number; // 当字符数超出 `max` 时的裁剪逻辑 exceedFormatter?: (value: string, config: { max: number }) => string; } ``` ### nz-input-password 可使用 `nz-input-wrapper` 的所有属性。 | 参数 | 说明 | 类型 | 默认值 | | ---------------------- | -------------------------- | --------------------------- | ------- | | `[nzVisibilityToggle]` | 是否显示切换按钮 | `boolean` | `true` | | `[nzVisible]` | 是否显示密码,支持双向绑定 | `boolean` | `false` | | `(nzVisibleChange)` | 是否显示密码变更事件 | `OutputEmitterRef` | - | ### nz-input-search 可使用 `nz-input-wrapper` 的所有属性。 | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ---------------------------------------------------------------- | ------------------------------------------------------------- | ------- | | `[nzEnterButton]` | 是否有确认按钮,可设为按钮文字。该属性会与 `nzAddonAfter` 冲突。 | `boolean \| string` | `false` | | `[nzLoading]` | 搜索 loading | `boolean` | `false` | | `(nzSearch)` | 点击搜索图标、清除图标,或按下回车键时的事件 | `{ value: string, event: Event, source: 'clear' \| 'input' }` | | ### nz-input-group > ⚠️ `nz-input-group` 已在 `v20.0.0` 中废弃,将在 `v22.0.0` 中移除,请使用 `nz-input-wrapper` 组件。 | 参数 | 说明 | 类型 | 默认值 | | ----------------- | ------------------------------------------------------------- | --------------------------------- | ----------- | | `[nzAddOnAfter]` | 带标签的 input,设置后置标签,可以与 `nzAddOnBefore` 配合使用 | `string \| TemplateRef` | - | | `[nzAddOnBefore]` | 带标签的 input,设置前置标签,可以与 `nzAddOnAfter` 配合使用 | `string \| TemplateRef` | - | | `[nzPrefix]` | 带有前缀图标的 input,可以与 `nzSuffix` 配合使用 | `string \| TemplateRef` | - | | `[nzSuffix]` | 带有后缀图标的 input,可以与 `nzPrefix` 配合使用 | `string \| TemplateRef` | - | | `[nzSearch]` | 是否用搜索框 | `boolean` | `false` | | `[nzSize]` | `nz-input-group` 中所有的 `nz-input` 的大小 | `'large' \| 'small' \| 'default'` | `'default'` | | `[nzStatus]` | 设置校验状态 | `'error' \| 'warning'` | - | ### nz-textarea-count | 参数 | 说明 | 类型 | 默认值 | | --------------------------- | ---------------------------------- | ----------------------- | --------------- | | `[nzMaxCharacterCount]` | `textarea` 数字提示显示的最大值 | `number` | - | | `[nzComputeCharacterCount]` | 自定义计算 `characterCount` 的函数 | `(v: string) => number` | `v => v.length` | ### nz-input-otp | Property | Description | Type | Default | | --------------- | ------------------------------------------------- | --------------------------------- | ----------- | | `[disabled]` | 是否禁用 | boolean | `false` | | `[nzFormatter]` | 格式化展示,留空字段会被 ` ` 填充 | `(value: string) => string` | - | | `[nzMask]` | 自定义展示,和 `formatter` 的区别是不会修改原始值 | `boolean \| null` | `null` | | `[nzLength]` | 输入元素数量 | `number` | `6` | | `[nzStatus]` | 设置校验状态 | `'error' \| 'warning'` | - | | `[nzSize]` | 输入框大小 | `'large' \| 'small' \| 'default'` | `'default'` | ## Q&A ### 如何使用紧凑型输入框组合? 从 v20 版本开始,`nz-input-group` 不再直接支持紧凑模式,你可以使用 [nz-space-compact](/components/space/zh#components-space-demo-compact) 替代。 ### NG0951 错误 若通过 `ngTemplateOutlet` 等方式将 `nz-input` 动态渲染到 `nz-input-wrapper` 内部,可能会触发 `NG0951` 错误。 这是由于 Angular 的内容投影(Content Projection)与子查询(Child Query)机制是静态的,无法识别动态渲染的组件(参考:[angular/angular#64504](https://github.com/angular/angular/issues/64504))。 鉴于 `nz-input-wrapper` 依赖于内容子查询来定位 `nz-input`,建议将 `nz-input-wrapper` 与 `nz-input` 视为一个整体,避免拆分渲染。 ```html @if (need_affix_or_addon) { } @else { } ``` --- --- category: Components subtitle: 进度条 type: 反馈 title: Progress cover: 'https://gw.alipayobjects.com/zos/alicdn/xqsDu4ZyR/Progress.svg' description: 展示操作的当前进度。 --- ## 何时使用 在操作需要较长时间才能完成时,为用户显示该操作的当前进度和状态。 - 当一个操作会打断当前界面,或者需要在后台运行,且耗时可能超过 2 秒时; - 当需要显示一个操作完成的百分比时。 ## API ### nz-progress 各类型通用的属性。 | 属性 | 说明 | 类型 | 默认值 | 全局配置 | | -------------------- | ---------------------------- | -------------------------------------------------------------------------------------- | -------------------------- | -------- | | `[nzType]` | 类型 | `'line' \| 'circle' \| 'dashboard'` | `'line'` | | | `[nzFormat]` | 内容的模板函数 | `(percent: number) => string \| TemplateRef<{ $implicit: number }>` | `percent => percent + '%'` | | `[nzPercent]` | 百分比 | `number` | `0` | | | `[nzShowInfo]` | 是否显示进度数值或状态图标 | `boolean` | `true` | ✅ | | `[nzStatus]` | 状态 | `'success' \| 'exception' \| 'active' \| 'normal'` | - | | | `[nzStrokeLinecap]` | 进度条端点形状 | `'round' \| 'square'` | `'round'` | ✅ | | `[nzStrokeColor]` | 进度条颜色,传入对象时为渐变 | `string \| { from: string; to: string: direction: string; [percent: string]: string }` | - | ✅ | | `[nzSuccessPercent]` | 已完成的分段百分比 | `number` | 0 | | ### `nzType="line"` | 属性 | 说明 | 类型 | 默认值 | | ----------------- | ----------------------- | -------- | ------ | | `[nzStrokeWidth]` | 进度条线的宽度,单位 px | `number` | `8` | | `[nzSteps]` | 进度条总共步数 | `number` | - | ### `nzType="circle"` | 属性 | 说明 | 类型 | 默认值 | 全局配置 | | ----------------- | ------------------------------------------------ | -------- | ------ | -------- | | `[nzWidth]` | 圆形进度条画布宽度,单位 px | `number` | `132` | | | `[nzStrokeWidth]` | 圆形进度条线的宽度,单位是进度条画布宽度的百分比 | `number` | `6` | ✅ | ### `nzType="dashboard"` | 属性 | 说明 | 类型 | 默认值 | 全局配置 | | ----------------- | -------------------------------------------------- | ---------------------------------------- | ------- | -------- | | `[nzWidth]` | 仪表盘进度条画布宽度,单位 px | `number` | `132` | | | `[nzStrokeWidth]` | 仪表盘进度条线的宽度,单位是进度条画布宽度的百分比 | `number` | `6` | ✅ | | `[nzGapDegree]` | 仪表盘进度条缺口角度,可取值 0 ~ 360 | `number` | `0` | ✅ | | `[nzGapPosition]` | 仪表盘进度条缺口位置 | `'top' \| 'right' \| 'bottom' \| 'left'` | `'top'` | ✅ | --- --- category: Components subtitle: 选择器 type: 数据录入 title: Select cover: 'https://gw.alipayobjects.com/zos/alicdn/_0XzgOis7/Select.svg' description: 下拉选择器。 --- ## 何时使用 - 弹出一个下拉菜单给用户选择操作,用于代替原生的选择器,或者需要一个更优雅的多选器时。 - 当选项少时(少于 5 项),建议直接将选项平铺,使用 [Radio](/components/radio/zh) 是更好的选择。 - 如果你在寻找一个可输可选的输入框,那你可能需要 [AutoComplete](/components/auto-complete/zh)。 ## API ```html ``` ### nz-select | 参数 | 说明 | 类型 | 默认值 | 全局配置 | 版本 | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | -------- | ------ | | `[nzId]` | 组件内部 input 的 id 值 | `string` | - | | `[ngModel]` | 当前选中的 nz-option 的 nzValue 值,可双向绑定,当 `nzMode` 为 `multiple` 或 `tags` 时,ngModel 为数组 | `any \| any[]` | - | | `[compareWith]` | 与 [SelectControlValueAccessor](https://angular.cn/api/forms/SelectControlValueAccessor) 相同 | `(o1: any, o2: any) => boolean` | `(o1: any, o2: any) => o1===o2` | | `[nzAutoClearSearchValue]` | 是否在选中项后清空搜索框,只在 `mode` 为 `multiple` 或 `tags` 时有效。 | `boolean` | `true` | | `[nzAllowClear]` | 支持清除 | `boolean` | `false` | | `[nzBackdrop]` | 浮层是否应带有背景板 | `boolean` | `false` | | `[nzVariant]` | 形态变体 | `'outlined' \| 'borderless' \| 'filled' \| 'underlined'` | `'outlined'` | ✅ | 20.0.0 | | `[nzOpen]` | 下拉菜单是否打开,可双向绑定 | `boolean` | `false` | | `[nzAutoFocus]` | 默认获取焦点 | `boolean` | `false` | | `[nzDisabled]` | 是否禁用 | `boolean` | `false` | | `[nzDropdownClassName]` | 下拉菜单的 className 属性 | `string \| string[]` | - | | `[nzDropdownMatchSelectWidth]` | 下拉菜单和选择器同宽 | `boolean` | `true` | | `[nzDropdownStyle]` | 下拉菜单的 style 属性 | `object` | - | | `[nzCustomTemplate]` | 自定义选择框的 Template 内容 | `TemplateRef<{ $implicit: NzOptionComponent }>` | - | | `[nzServerSearch]` | 是否使用服务端搜索,当为 true 时,将不再在前端对 nz-option 进行过滤 | `boolean` | `false` | | `[nzFilterOption]` | 是否根据输入项进行筛选。当其为一个函数时,会接收 `inputValue` `option` 两个参数,当 `option` 符合筛选条件时,应返回 `true`,反之则返回 `false`。 | `(input?: string, option?: NzOptionComponent) => boolean;` | - | | `[nzMaxMultipleCount]` | 最多选中多少个标签 | `number` | `Infinity` | | `[nzMode]` | 设置 nz-select 的模式 | `'multiple' \| 'tags' \| 'default'` | `'default'` | | `[nzNotFoundContent]` | 当下拉列表为空时显示的内容 | `string \| TemplateRef` | - | | `[nzPlaceHolder]` | 选择框默认文字 | `string` | - | | `[nzShowArrow]` | 是否显示下拉小箭头 | `boolean` | 单选为 `true`,多选为 `false` | | `[nzShowSearch]` | 使单选模式可搜索 | `boolean` | `false` | | `[nzSize]` | 选择框大小 | `'large' \| 'small' \| 'default'` | `'default'` | | `[nzStatus]` | 设置校验状态 | `'error' \| 'warning'` | - | | `[nzPreix]` | 自定义的选择框前缀 | `TemplateRef \| string` | - | | `[nzSuffixIcon]` | 自定义的选择框后缀图标 | `TemplateRef \| string` | - | ✅ | | `[nzRemoveIcon]` | 自定义的多选框清除图标 | `TemplateRef` | - | | `[nzClearIcon]` | 自定义的多选框清空图标 | `TemplateRef` | - | | `[nzMenuItemSelectedIcon]` | 自定义当前选中的条目图标 | `TemplateRef` | - | | `[nzTokenSeparators]` | 在 tags 和 multiple 模式下自动分词的分隔符 | `string[]` | `[]` | | `[nzLoading]` | 加载中状态 | `boolean` | `false` | | `[nzMaxTagCount]` | 最多显示多少个 tag | `number` | - | | `[nzMaxTagPlaceholder]` | 隐藏 tag 时显示的内容 | `TemplateRef<{ $implicit: any[] }>` | - | | `[nzOptions]` | option 列表,可以取代 nz-option,用法参见例子 | `Array<{ label: string \| number \| TemplateRef; value: any; key?: string \| number; disabled?: boolean; hide?: boolean; groupLabel?: string \| TemplateRef;}>` | - | | `[nzOptionHeightPx]` | 下拉菜单中每个 Option 的高度 | `number` | `32` | ✅ | | `[nzOptionOverflowSize]` | 下拉菜单中最多展示的 Option 个数,超出部分滚动 | `number` | `8` | | `[nzSelectOnTab]` | 允许使用 TAB 键选择项目 | `boolean` | `false` | | `(ngModelChange)` | 选中的 nz-option 发生变化时,调用此函数 | `EventEmitter` | - | | `(nzOpenChange)` | 下拉菜单打开状态变化回调 | `EventEmitter` | - | | `(nzScrollToBottom)` | 下拉列表滚动到底部的回调 | `EventEmitter` | - | | `(nzOnSearch)` | 文本框值变化时回调 | `EventEmitter` | - | | `(nzOnClear)` | 清空已选项时触发的回调函数。 | `EventEmitter` | - | - | 20.0.0 | | `(nzFocus)` | focus 时回调 | `EventEmitter` | - | | `(nzBlur)` | blur 时回调 | `EventEmitter` | - | ### nz-option | 参数 | 说明 | 类型 | 默认值 | | ------------------- | ------------------------------------------------------------------------------------------------ | ------------------ | ------- | | `[nzDisabled]` | 是否禁用 | `boolean` | `false` | | `[nzTitle]` | 选项上的原生 title 提示 | `string \| number` | - | | `[nzLabel]` | 选中该 nz-option 后,nz-select 中显示的文字 | `string \| number` | - | | `[nzValue]` | nz-select 中 ngModel 的值 | `any` | - | | `[nzKey]` | nz-select 中 ngModel 的值 | `string \| number` | - | | `[nzHide]` | 是否在选项列表中隐藏该选项 | `boolean` | `false` | | `[nzCustomContent]` | 是否自定义在下拉菜单中的 Template 内容,当为 true 时,nz-option 包裹的内容将直接渲染在下拉菜单中 | `boolean` | `false` | ### nz-option-group | 参数 | 说明 | 类型 | 默认值 | | ----------- | ---- | --------------------------------------- | ------ | | `[nzLabel]` | 组名 | `string \| number \| TemplateRef` | - | ## 方法 ### nz-select | 名称 | 说明 | | --------- | -------- | | `blur()` | 取消焦点 | | `focus()` | 获取焦点 | ## FAQ ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components type: 反馈 title: Notification subtitle: 通知提醒框 cover: 'https://gw.alipayobjects.com/zos/alicdn/Jxm5nw61w/Notification.svg' description: 全局展示通知提醒信息。 --- ## 何时使用 在系统四个角显示通知提醒信息。经常用于以下情况: - 较为复杂的通知内容。 - 带有交互的通知,给出用户下一步的行动点。 - 系统主动推送。 ## API ### NzNotificationService 组件提供了一些服务方法,使用方式和参数如下: - `NzNotificationService.blank(title, content, [options])` // 不带图标的提示 - `NzNotificationService.success(title, content, [options])` - `NzNotificationService.error(title, content, [options])` - `NzNotificationService.info(title, content, [options])` - `NzNotificationService.warning(title, content, [options])` | 参数 | 说明 | 类型 | 默认值 | | --------- | ---------------------------------------- | ----------------------------- | ------ | | `title` | 标题 | `string \| TemplateRef` | - | | `content` | 提示内容 | `NzNotificationContentType` | - | | `options` | 支持设置针对当前提示框的参数,见下方表格 | `object` | - | `options` 支持设置的参数如下: | 参数 | 说明 | 类型 | | ---------------- | ----------------------------------- | --------------------------------------------------------------- | | `nzKey` | 通知提示的唯一标识符 | `string` | | `nzDuration` | 持续时间(毫秒),当设置为 0 时不消失 | `number` | | `nzPauseOnHover` | 鼠标移上时禁止自动移除 | `boolean` | | `nzAnimate` | 开关动画效果 | `boolean` | | `nzStyle` | 自定义内联样式 | `object` | | `nzClass` | 自定义 CSS class | `object` | | `nzData` | 任何想要在模板中作为上下文的数据 | `any` | | `nzCloseIcon` | 自定义关闭图标 | `TemplateRef \| string` | | `nzButton` | 自定义按钮 | `TemplateRef<{ $implicit: NzNotificationComponent }> \| string` | 还提供了全局销毁方法: - `NzNotificationService.remove(id)` // 移除特定id的消息,当id为空时,移除所有消息(该消息id通过上述方法返回值中得到) ### 全局配置 可以通过 `NzConfigService` 进行全局配置,详情请见文档中 [全局配置项](/docs/global-config/zh) 章节。 | 参数 | 说明 | 类型 | 默认值 | | ---------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------ | | `nzDuration` | 持续时间(毫秒),当设置为0时不消失 | `number` | `4500` | | `nzMaxStack` | 同一时间可展示的最大提示数量 | `number` | `8` | | `nzPauseOnHover` | 鼠标移上时禁止自动移除 | `boolean` | `true` | | `nzAnimate` | 开关动画效果 | `boolean` | `true` | | `nzTop` | 消息从顶部弹出时,距离顶部的位置。 | `string` | `'24px'` | | `nzBottom` | 消息从底部弹出时,距离底部的位置。 | `string` | `'24px'` | | `nzPlacement` | 弹出位置,可选 `topLeft` `topRight` `bottomLeft` `bottomRight` `top` `bottom` | `'topLeft' \| 'topRight' \| 'bottomLeft' \| 'bottomRight' \| 'top' \| 'bottom'` | `'topRight'` | | `nzDirection` | 通知的文字方向 | `'ltr' \| 'rtl'` | - | ### NzNotificationRef 当你调用 `NzNotificationService.success` 或其他方法时会返回该对象。 ```ts export interface NzNotificationDataRef { messageId: string; onClose: Subject; // 当 notification 关闭时它会派发一个事件,如果为用户手动关闭会派发 `true` onClick: Subject; } ``` --- --- category: Components subtitle: 锚点 type: 导航 title: Anchor cover: 'https://gw.alipayobjects.com/zos/alicdn/_1-C1JwsC/Anchor.svg' description: 用于跳转到页面指定位置。 --- ## 何时使用 需要展现当前页面上可供跳转的锚点链接,以及快速在锚点之间跳转。 ## API ### nz-anchor | 成员 | 说明 | 类型 | 默认值 | 全局配置 | | -------------------- | --------------------------------------- | ------------------------------------- | ------------ | -------- | | `[nzAffix]` | 固定模式 | `boolean` | `true` | | `[nzBounds]` | 锚点区域边界,单位:px | `number` | `5` | ✅ | | `[nzOffsetTop]` | 距离窗口顶部达到指定偏移量后触发 | `number` | - | ✅ | | `[nzShowInkInFixed]` | 固定模式是否显示小圆点 | `boolean` | `false` | ✅ | | `[nzTargetOffset]` | 锚点滚动偏移量,默认与 `offsetTop` 相同 | number | - | | | `[nzContainer]` | 指定滚动的容器 | `string \| HTMLElement` | `window` | | `[nzCurrentAnchor]` | 自定义高亮的锚点 | string | - | | | `[nzDirection]` | 设置导航方向 | `'vertical' \| 'horizontal'` | `'vertical'` | | | `(nzClick)` | 点击项触发 | `EventEmitter` | - | | `(nzChange)` | 监听锚点链接改变 | `EventEmitter` | - | | | `(nzScroll)` | 滚动至某锚点时触发 | `EventEmitter` | - | ### nz-link | 成员 | 说明 | 类型 | | ------------ | ------------------------------ | ----------------------------- | | `[nzHref]` | 锚点链接 | `string` | | `[nzTarget]` | 该属性指定在何处显示链接的资源 | `string` | | `[nzTitle]` | 文字内容 | `string \| TemplateRef` | --- --- category: Components type: 布局 subtitle: 间距 title: Space cols: 1 cover: 'https://gw.alipayobjects.com/zos/antfincdn/wc6%263gJ0Y8/Space.svg' description: 设置组件之间的间距。 --- ## 何时使用 避免组件紧贴在一起,拉开统一的空间。 - 适合行内元素的水平间距。 - 可以设置各种水平对齐方式。 - 需要表单组件之间紧凑连接且合并边框时,使用 ``。 与 Flex 组件的区别: - Space 为内联元素提供间距,其本身会为每一个子元素添加包裹元素用于内联对齐。适用于行、列中多个子元素的等距排列。 - Flex 为块级元素提供间距,其本身不会添加包裹元素。适用于垂直或水平方向上的子元素布局,并提供了更多的灵活性和控制能力。 ## API ### nz-space | 参数 | 说明 | 类型 | 默认值 | 支持全局配置 | | --------------- | -------------------------------------- | -------------------------------------------- | -------------- | ------------ | | `[nzSize]` | 间距大小 | `NzSpaceSize \| NzSpaceSize[]` | `'small'` | ✅ | | `[nzDirection]` | 间距方向 | `'vertical' \| 'horizontal'` | `'horizontal'` | | | `[nzAlign]` | 对齐方式 | `'start' \| 'end' \| 'baseline' \| 'center'` | - | | | `[nzWrap]` | 是否自动换行,仅在 `horizontal` 时有效 | `boolean` | `false` | | | `[nzSplit]` | 设置分隔符 | `TemplateRef \| string` | - | | #### Interfaces ```ts type NzSpaceSize = 'small' | 'middle' | 'large' | number; ``` ### nz-space-compact 需要表单组件之间紧凑连接且合并边框时,使用 ``。支持的组件有: - Button - Cascader - DatePicker - Input - Select - TimePicker - TreeSelect | 参数 | 说明 | 类型 | 默认值 | 支持全局配置 | | --------------- | ---------------------------- | --------------------------------- | -------------- | ------------ | | `[nzBlock]` | 将宽度调整为父元素宽度的选项 | `boolean` | `false` | | | `[nzDirection]` | 指定排列方向 | `'vertical' \| 'horizontal'` | `'horizontal'` | | | `[nzSize]` | 子组件大小 | `'large' \| 'small' \| 'default'` | `'default'` | | --- --- category: Components subtitle: 面包屑 type: 导航 title: Breadcrumb cover: 'https://gw.alipayobjects.com/zos/alicdn/9Ltop8JwH/Breadcrumb.svg' description: 显示当前页面在系统层级结构中的位置,并能向上返回。 --- ## 何时使用 - 当系统拥有超过两级以上的层级结构时; - 当需要告知用户『你在哪里』时; - 当需要向上导航的功能时。 ## API ### nz-breadcrumb | 参数 | 说明 | 类型 | 默认值 | | ------------------ | -------------------------------------------------------------------------------------------------- | ------------------------------------- | ---------------- | | `[nzSeparator]` | 分隔符自定义 | `string \| TemplateRef \| null` | `'/'` | | `[nzAutoGenerate]` | 自动生成 Breadcrumb | `boolean` | `false` | | `[nzRouteLabel]` | 自定义 route data 属性名称,`nzAutoGenerate` 为 `true` 时才生效 | `string` | `'breadcrumb'` | | `[nzRouteLabelFn]` | 格式化面包屑导航项的显示文字,通常用于在国际化应用中翻译键值, `nzAutoGenerate` 为 `true` 时才生效 | `(label:string) => string` | `label => label` | | `[nzRouteFn]` | 格式化面包屑路由格式,可用于为 URL 添加 query params,`nzAutoGenerate` 为 `true` 时才生效 | `(route:string) => route` | `route => route` | 使用 `[nzAutoGenerate]` 时,需要在路由类中定义 `data`: ```ts { path: 'path', component: SomeComponent, data: { breadcrumb: 'Display Name' } } ``` 对于懒加载路由,应该在父层路由写 `data`: ```ts { path: 'first', loadChildren: () => import('./first/first.module').then(m => m.FirstModule), data: { breadcrumb: 'First' }, } ``` 使用 `nzRouteLabel` 自定义路由属性名称: ```html ``` ```ts { path: 'path', component: SomeComponent, data: { customBreadcrumb: 'Display Name' } } ``` 使用 `nzRouteLabelFn` 在国际化应用中格式化面包屑导航项的文本: ```html ``` ```ts // In Route { path: 'path', component: SomeComponent, data: { breadcrumbI18nKey: 'i18n.aaa.bbbb' } } // In component translateFn = (key: string) => this.yourI18nService.translate(key); ``` 使用 `nzRouteFn` 来使用格式化 URL 或添加 query params: ```html ``` ```ts // In component bindCurrentParams(params, route) { let newRoute = route; for (const key in params) { if (params.hasOwnProperty(key)) { newRoute += `;${key}=${params[key]}`; } } return newRoute; } const params = this.activatedRoute.snapshot.params; customRoute = (route:string) => this.bindCurrentParams(params,route); ``` --- --- category: Components type: 导航 title: PageHeader cols: 1 subtitle: 页头 cover: 'https://gw.alipayobjects.com/zos/alicdn/6bKE0Cq0R/PageHeader.svg' description: 带有通用操作的页头。 --- ## 何时使用 页头位于页容器中,页容器顶部,起到了内容概览和引导页级操作的作用。包括由面包屑、标题、页面内容简介、页面级操作等、页面级导航组成。 当需要使用户快速理解当前页是什么以及方便用户使用页面功能时使用,通常也可被用作页面间导航。 ## API ```html ``` ### nz-page-header | 参数 | 说明 | 类型 | 默认值 | 全局配置 | | -------------- | ------------------ | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | | `[nzGhost]` | 使背景色透明 | `boolean` | `true` | ✅ | | `[nzTitle]` | title 文字 | `string \| TemplateRef` | - | - | | `[nzSubtitle]` | subTitle 文字 | `string \| TemplateRef` | - | - | | `[nzBackIcon]` | 自定义 back icon | `string \| TemplateRef` | - | - | | `(nzBack)` | 返回按钮的点击事件 | `EventEmitter` | 未订阅该事件时默认调用 [Location#back](https://angular.cn/api/common/Location#back)(需要引入 [RouterModule](https://angular.cn/api/router/RouterModule) 或者注册 [Location](https://angular.cn/api/common/Location)) | - | ### Page header 组成部分 | 元素 | 说明 | | ------------------------------------------ | ---------------------------------------- | | `nz-page-header-title` | title 部分,`[nzTitle]` 优先级更高 | | `nz-page-header-subtitle` | subtitle 部分,`[nzSubtitle]` 优先级更高 | | `nz-page-header-content` | 内容部分 | | `nz-page-header-footer` | 底部部分 | | `nz-page-header-tags` | title 旁的 tag 列表容器 | | `nz-page-header-extra` | title 的行尾操作区部分 | | `nz-breadcrumb[nz-page-header-breadcrumb]` | 面包屑部分 | | `nz-avatar[nz-page-header-avatar]` | 头像部分 | --- --- category: Components subtitle: 颜色选择器 type: 数据录入 title: ColorPicker tag: 16.2.0 cover: 'https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*PpY4RYNM8UcAAAAAAAAAAAAADrJ8AQ/original' description: 用于颜色选择。 --- ## 何时使用 当用户需要自定义颜色选择的时候使用。 ## API ### nz-color-picker | 参数 | 说明 | 类型 | 默认值 | 版本 | | -------------------- | -------------------- | -------------------------------------------------- | ----------- | ------ | | `[nzFormat]` | 颜色格式 | `'rgb' \| 'hex' \| 'hsb'` | `'hex'` | | `[nzValue]` | 颜色的值 | `string \| NzColor` | - | | `[nzSize]` | 设置触发器大小 | `'large' \| 'small' \| 'default'` | `'default'` | | `[nzDefaultValue]` | 颜色默认的值 | `string \| NzColor` | - | | `[nzAllowClear]` | 允许清除选择的颜色 | `boolean` | `false` | | `[nzTrigger]` | 颜色选择器的触发模式 | `'hover' \| 'click'` | `'click'` | | `[nzShowText]` | 显示颜色文本 | `boolean` | `false` | | `[nzOpen]` | 是否显示弹出窗口 | `boolean` | `false` | | `[nzDisabled]` | 禁用颜色选择器 | `boolean` | `false` | | `[nzDisabledAlpha]` | 禁用透明度 | `boolean` | `false` | | `[nzTitle]` | 设置颜色选择器的标题 | `TemplateRef \| string` | - | | `[nzPresets]` | 预设的颜色 | `NzColorPickerPresetsItem[]` | - | 21.0.0 | | `(nzOnChange)` | 颜色变化的回调 | `EventEmitter<{ color: NzColor; format: string }>` | - | | `(nzOnClear)` | 清除的回调 | `EventEmitter` | - | | `(nzOnFormatChange)` | 颜色格式变化的回调 | `EventEmitter<'rgb'|'hex'|'hsb'>` | - | | `(nzOnOpenChange)` | 打开颜色面板的回调 | `EventEmitter` | - | ### nz-color-block | 参数 | 说明 | 类型 | 默认值 | | ------------- | ---------------- | --------------------------------- | ----------- | | `[nzColor]` | 模块的颜色 | `string` | `'#1677ff'` | | `[nzSize]` | 色彩块的大小 | `'large' \| 'small' \| 'default'` | `'default'` | | `[nzOnClick]` | 点击色彩块的回调 | `EventEmitter` | - | ### NzColor | 参数 | 说明 | 类型 | 默认值 | | ------------- | -------------------------------------------------------------- | ------------------------------------------------------- | ------ | | `toHex` | 转换成 `hex` 格式字符,返回格式如:`1677ff` | `() => string` | - | | `toHexString` | 转换成 `hex` 格式颜色字符串,返回格式如:`#1677ff` | `() => string` | - | | `toHsb` | 转换成 `hsb` 对象 | `() => ({ h: number, s: number, b: number, a number })` | - | | `toHsbString` | 转换成 `hsb` 格式颜色字符串,返回格式如:`hsb(215, 91%, 100%)` | `() => string` | - | | `toRgb` | 转换成 `rgb` 对象 | `() => ({ r: number, g: number, b: number, a number })` | - | | `toRgbString` | 转换成 `rgb` 格式颜色字符串,返回格式如:`rgb(22, 119, 255)` | `() => string` | - | ## FAQ ### Q:滚动时浮层元素没有跟随滚动位置 默认情况下,浮层元素使用 `body` 作为滚动容器,如果使用了其他滚动容器,在自定义滚动容器元素上添加 [CdkScrollable](https://material.angular.dev/cdk/scrolling/api#CdkScrollable) 指令。 注意:您需要从 `@angular/cdk/scrolling` 导入 `CdkScrollable` 指令或 `ScrollingModule` 模块。 --- --- category: Components subtitle: 骨架屏 type: 反馈 title: Skeleton cols: 1 cover: 'https://gw.alipayobjects.com/zos/alicdn/KpcciCJgv/Skeleton.svg' description: 在需要等待加载内容的位置提供一个占位图形组合。 --- ## 何时使用 - 网络较慢,需要长时间等待加载处理的情况下。 - 图文信息内容较多的列表/卡片中。 - 只适合用在第一次加载数据的场景。 - 可以被 Spin 完全代替,但是在可用的场景下可以比 Spin 提供更好的视觉效果和用户体验。 ## API ### nz-skeleton | 属性 | 说明 | 类型 | 默认值 | | --------------- | ---------------------------------------------- | -------------------------------- | ------- | | `[nzActive]` | 是否展示动画效果 | `boolean` | `false` | | `[nzAvatar]` | 是否显示头像占位图 | `boolean \| NzSkeletonAvatar` | `false` | | `[nzLoading]` | 为 `true` 时,显示占位图。反之则直接展示子组件 | `boolean` | - | | `[nzParagraph]` | 是否显示段落占位图 | `boolean \| NzSkeletonParagraph` | `true` | | `[nzTitle]` | 是否显示标题占位图 | `boolean \| NzSkeletonTitle` | `true` | | `[nzRound]` | 为 `true` 时,段落和标题显示圆角 | `boolean` | `false` | ### NzSkeletonAvatar | 属性 | 说明 | 类型 | 默认值 | | ------- | -------------------- | ------------------------------------------- | ------ | | `size` | 设置头像占位图的大小 | `number \| 'large' \| 'small' \| 'default'` | - | | `shape` | 指定头像的形状 | `'circle' \| 'square'` | - | ### NzSkeletonTitle | 属性 | 说明 | 类型 | 默认值 | | ------- | -------------------- | ------------------ | ------ | | `width` | 设置标题占位图的宽度 | `number \| string` | - | ### NzSkeletonParagraph | 属性 | 说明 | 类型 | 默认值 | | ------- | -------------------------------------------------------------------------- | --------------------------------------------- | ------ | | `rows` | 设置段落占位图的行数 | `number` | - | | `width` | 设置标题占位图的宽度,若为数组时则为对应的每行宽度,反之则是最后一行的宽度 | `number \| string \| Array` | - | ### nz-skeleton-element [nzType="button"] | 属性 | 说明 | 类型 | 默认值 | | ------------ | ---------------- | ---------------------------------------------- | ----------- | | `[nzActive]` | 是否展示动画效果 | `boolean` | `false` | | `[nzSize]` | 大小 | `'large' \| 'small' \| 'default'` | `'default'` | | `[nzShape]` | 形状 | `'square' \| 'circle' \| 'round' \| 'default'` | `'default'` | ### nz-skeleton-element [nzType="avatar"] | 属性 | 说明 | 类型 | 默认值 | | ------------ | ---------------- | ------------------------------------------- | ----------- | | `[nzActive]` | 是否展示动画效果 | `boolean` | `false` | | `[nzSize]` | 大小 | `number \| 'large' \| 'small' \| 'default'` | `'default'` | | `[nzShape]` | 形状 | `'circle' \| 'square'` | `'square'` | ### nz-skeleton-element [nzType="input"] | 属性 | 说明 | 类型 | 默认值 | | ------------ | ---------------- | --------------------------------- | ----------- | | `[nzActive]` | 是否展示动画效果 | `boolean` | `false` | | `[nzSize]` | 大小 | `'large' \| 'small' \| 'default'` | `'default'` | ### nz-skeleton-element [nzType="image"] | 属性 | 说明 | 类型 | 默认值 | | ------------ | ---------------- | --------- | ------- | | `[nzActive]` | 是否展示动画效果 | `boolean` | `false` | ---
      Name Age Address Action
      {{data.name}} {{data.age}} {{data.address}} Action 一 {{data.name}} Delete