@covalent/dynamic-forms

中文文档
11.23.0发布于 2026/10/02MITTypeScriptES Module近 30 天下载 4025

Teradata UI 平台动态表单模块

中文使用文档
文档目录4 节
  1. API 总结
  2. 设置
  3. 使用量
  4. 运行单元测试

td-动力形式

API 总结

投入

  • 元素: ITdDynamicElementConfig []
    • JS Object 将视其配置来制作元素.
    • 需要[名 财产.

属性( 只读)

  • 窗体: 窗体组
    • 动态的 Getter 属性 [FormGroup].
  • 无效:布尔
    • 动态 [FormGroup] 的 Getter 属性 .
  • 值: 任意
    • 动态 [FormGroup] 的 [value] 属性.
  • 错误 : {[名称:字符串]: 任何}
    • 动态 [FormGroup] 的 [errors] 获取属性 .
  • 控件 : {[键:字符串]: 抽象控制}
    • 动态 [FormGroup] 的 [控 的获取属性 .

方法

  • 刷新: 函数
    • 刷新窗体并重新提交所有验证符/元素修改

设置

在您的 NgModule 中导入 [covalentDynamicFormsModule] :

import { CovalentDynamicFormsModule } from '@covalent/dynamic-forms';
@NgModule({
  imports: [
    CovalentDynamicFormsModule,
    ...
  ],
  ...
})
export class MyModule {}

使用量

td-dynamic-forms 元素动态生成窗体

传递一组执行 [ITdDynamicElementConfig] 的javascript对象,其信息要提供给[元素]属性.

// Property values to be set in custom component
export interface ITdDynamicElementCustomConfig {
  [name: string]: any;
}

export interface ITdDynamicElementConfig {
  label?: string;
  name: string;
  hint?: string;
  type: TdDynamicType | TdDynamicElement | Type<any>;
  required = false;
  disabled?: boolean;
  min?: any;
  max?: any;
  minLength?: any;
  maxLength?: any;
  selections?: string[] | { value: any; label: string }[];
  multiple?: boolean;
  default?: any;
  flex?: number;
  validators?: ITdDynamicElementValidator[];
  customConfig?: ITdDynamicElementCustomConfig;
}

注:对于自定义类型,需要执行 [control] 财产,并用在你的基本元素.

HTML 使用示例 :

<td-dynamic-forms [elements]="elements">
  <ng-template let-element ngFor [ngForOf]="elements">
    <ng-template let-control="control" [tdDynamicFormsError]="element.name">
      <span *ngIf="control.touched || !control.pristine">
        <span *ngIf="control.hasError('required')">Required</span>
        <span *ngIf="control.hasError('min')">Min value: {{element.min}}</span>
        <span *ngIf="control.hasError('max')">Max value: {{element.max}}</span>
        <span *ngIf="control.hasError('minlength')"
          >Min length value: {{element.minLength}}</span
        >
        <span *ngIf="control.hasError('maxlength')"
          >Max length value: {{element.minLength}}</span
        >
      </span>
    </ng-template>
  </ng-template>
</td-dynamic-forms>
import { ITdDynamicElementConfig, TdDynamicElement, TdDynamicType } from '@covalent/dynamic-forms';
...
/* CUSTOM TYPE */
  template: `<label>{{label}}</label>
              <input [formControl]="control">
              <div *ngIf="errorMessageTemplate && control.errors"
                  class="tc-red-600"
                  [style.font-size.%]="'70'">
                <ng-template
                  [ngTemplateOutlet]="errorMessageTemplate"
                  [ngTemplateOutletContext]="{control: control, errors: control.errors}">
                </ng-template>
              </div>`,
})
export class DynamicCustomComponent {
  /* control property needed to properly bind the underlying element */
  control: FormControl;

  /* map any of the properties you passed in the config */
  label: string;

  /* map the error message template and use it anywhere you need to */
  errorMessageTemplate: TemplateRef<any>;
}
...
})
export class Demo {
  elements: ITdDynamicElementConfig[] = [{
    name: 'input',
    hint: 'hint',
    type: TdDynamicElement.Input,
    required: true,
  }, {
    name: 'textLength',
    label: 'Text Length',
    type: TdDynamicElement.Input,
    minLength: 4,
    maxLength: 12,
  }, {
    name: 'number',
    type: TdDynamicType.Number,
    min: 10,
    max: 80,
  }, {
    name: 'slider',
    label: 'Label',
    type: TdDynamicElement.Slider,
    required: true,
  }, {
    name: 'boolean',
    type: TdDynamicType.Boolean,
    default: false,
    disabled: true,
  }, {
    name: 'select',
    type: TdDynamicElement.Select,
    required: true,
    multiple: false,
    selections: ['A','B','C'],
    default: 'A',
  }, {
    name: 'file-input',
    label: 'Label',
    type: TdDynamicElement.FileInput,
  }, {
    name: 'datepicker',
    label: 'Date',
    type: TdDynamicElement.Datepicker,
  }, {
    name: 'custom',
    label: 'Custom',
    type: DynamicCustomComponent,
    required: true,
  }];
}

注:要使用取枣机,请提供执行 DateAdapter.单击[此处],以了解有关取枣材料的更多信息(https://material.angular.io/ 组件/datepicker/overview#choosing-a-date-执行-和-date-format-s设置(中文(简体) )

运行单元测试

运行 nx test angular-dynamic-forms 执行单元测试.

版本与发布记录

@covalent/dynamic-forms 共发布 428 个版本,首次发布于 2016/12/31;过去 12 个月发布了 74 个版本。

版本发布日期距今
11.23.0latest2026/10/021 个月前
11.22.12026/09/102 个月前
11.22.02026/09/102 个月前
11.21.02026/09/092 个月前
10.5.82026/07/293 个月前
11.20.12026/07/293 个月前

其他发布通道:next → 11.5.2-beta.1。

关于 @covalent/dynamic-forms 的常见问题

@covalent/dynamic-forms 是什么?

Teradata UI 平台动态表单模块

如何安装 @covalent/dynamic-forms?

在项目目录运行 npm install @covalent/dynamic-forms,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@angular/core(20.x.x)、@covalent/core(11.23.0)、@angular/common(20.x.x)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@covalent/dynamic-forms 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@covalent/dynamic-forms 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@covalent/dynamic-forms 可以商用吗?

@covalent/dynamic-forms 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@covalent/dynamic-forms 的下载量有多少?

根据 npm 官方下载统计,@covalent/dynamic-forms 在 2026/10/11 – 2026/11/09 这 30 天内被下载 4,025 次,日均约 134 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@covalent/dynamic-forms 还在维护吗?

最新版本 11.23.0 发布于 2026/10/02(1 个月前);至今共发布 428 个版本,其中过去 12 个月发布了 74 个;首次发布于 2016/12/31。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。