ng-zorro-antd 21.3.1:几个关键样式与动画修复值得留意

2026-06-05 12 预计阅读时间:1 分钟
来源:oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:7 分钟

ng-zorro-antd 作为 Ant Design 在 Angular 生态中的官方实现,长期服务于企业级中后台场景。这次 21.3.1 是一个 patch 版本,改动不大,但修的几个问题恰好是日常开发中容易踩到的坑——outlined 变体样式丢失、级联选择器滑动方向异常。如果你正在用这些组件,升级理由很直接。

outlined 变体样式类终于生效了

Ant Design 的设计体系里,组件有 filled、outlined、borderless 等多种视觉变体。ng-zorro-antd 也提供了对应的样式类,但此前 outlined 变体的样式类在某些组件上并没有正确应用——类名挂上了,CSS 规则却没匹配到,导致组件看起来和预期不一致。

这次 #9806 修复了这个问题。影响范围是全局的(commit 标记为 *),意味着不止一个组件受惠。如果你之前为了 workaround 手动补过 CSS,升级后可以移除那些临时样式了。

cascader / select / tree-select 滑动动画方向修正

9814 修复了 cascader、select、tree-select 三个组件的滑动动画方向问题。具体表现是:下拉面板展开或收起时,动画的位移方向与视觉预期相反——比如从下往上弹出时,面板却做了一个"向下滑入"的动画,看起来像闪了一下再跳到正确位置。

这类动画 bug 在功能上不影响使用,但对中后台产品的专业感有直接损害——用户会觉得界面"卡顿"或"闪烁"。修复后三个组件的展开收起动画方向与面板实际位置一致。

实践:升级与组件配置速查

升级方式很简单,一行命令搞定:

# 如果用 ng-add 方式管理
ng update ng-zorro-antd

# 或者直接改 package.json 后安装
npm install ng-zorro-antd@21.3.1

升级完成后,重点检查以下两类场景:

  1. 使用了 outlined 变体的组件——确认样式是否恢复正常,移除手动补的 CSS。
  2. cascader / select / tree-select 的下拉动画——确认展开收起方向是否自然。

下面是一个最小可运行的 Angular 组件示例,覆盖了这次修复涉及的三个组件和 outlined 变体用法,方便你直接粘贴验证:

// app.component.ts
import { Component } from '@angular/core';
import {
  NzSelectModule,
  NzCascaderModule,
  NzTreeSelectModule
} from 'ng-zorro-antd';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [NzSelectModule, NzCascaderModule, NzTreeSelectModule],
  template: `
    <div style="padding: 24px; display: flex; gap: 16px; flex-wrap: wrap;">
      <!-- outlined 变体 select -->
      <nz-select
        nzVariant="outlined"
        nzPlaceHolder="选择城市"
        style="width: 200px;"
      >
        <nz-option nzValue="beijing" nzLabel="北京"></nz-option>
        <nz-option nzValue="shanghai" nzLabel="上海"></nz-option>
        <nz-option nzValue="guangzhou" nzLabel="广州"></nz-option>
      </nz-select>

      <!-- cascader:验证滑动动画方向 -->
      <nz-cascader
        [nzOptions]="cascaderOptions"
        nzPlaceHolder="选择地区"
        style="width: 200px;"
      ></nz-cascader>

      <!-- tree-select:验证滑动动画方向 -->
      <nz-tree-select
        [nzNodes]="treeNodes"
        nzPlaceHolder="选择部门"
        nzShowSearch
        style="width: 200px;"
      ></nz-tree-select>
    </div>
  `
})
export class AppComponent {
  // cascader 数据
  cascaderOptions = [
    {
      value: 'zhejiang',
      label: '浙江',
      children: [
        { value: 'hangzhou', label: '杭州', children: [{ value: 'xihu', label: '西湖' }] },
        { value: 'ningbo', label: '宁波' }
      ]
    },
    {
      value: 'jiangsu',
      label: '江苏',
      children: [
        { value: 'nanjing', label: '南京', children: [{ value: 'zhonghuamen', label: '中华门' }] },
        { value: 'suzhou', label: '苏州' }
      ]
    }
  ];

  // tree-select 数据
  treeNodes = [
    {
      title: '技术部',
      key: 'tech',
      children: [
        { title: '前端组', key: 'frontend', isLeaf: true },
        { title: '后端组', key: 'backend', isLeaf: true }
      ]
    },
    {
      title: '产品部',
      key: 'product',
      children: [
        { title: '设计组', key: 'design', isLeaf: true },
        { title: '运营组', key: 'operation', isLeaf: true }
      ]
    }
  ];
}

运行前确保项目已安装 ng-zorro-antd@21.3.1 且 Angular 版本与之兼容(ng-zorro-antd 21.x 对应 Angular 21.x)。如果你的项目还在 Angular 17/18,需要先升级 Angular 或使用对应版本的 ng-zorro-antd。

升级建议与注意事项

  • patch 版本风险低:21.3.1 只包含 bug fix,没有 breaking change,从 21.3.0 升级无需改代码。
  • 优先排查自定义样式覆盖:如果你之前为了修 outlined 样式或动画问题写过全局 CSS hack,升级后这些 hack 可能和修复后的原生样式冲突,建议逐个移除并验证。
  • 关注后续版本:commit 信息显示还有其他 fix(摘要截断处标注了"4..."),完整 changelog 可在 GitHub releases 页面查看,确认是否有你用到的其他组件修复。
  • 非 21.x 用户别直接跳版本:ng-zorro-antd 版本号与 Angular 主版本强绑定,跨大版本升级需要先完成 Angular 迁移。

一句话总结:如果你用了 outlined 变体或 cascader/select/tree-select 的下拉面板,这个 patch 值得立刻升级;其他场景升级也无害,但收益不明显,可以随常规维护节奏一起推进。


相关推荐