SuperAPI AI 工具集

syncfusion-angular-form-renderer

前端与建站

查看项目

更新于 10-16 14:21

技能介绍

用途

Syncfusion Angular Form Renderer 用于在 Angular 中生成、排查和扩展基于 schema 的表单。该组件围绕单个 JSON schema 构建,schema 中声明字段定义、布局、校验、动态行为和提交动作。

适用任务包括:

  • 创建新的 Angular 应用并安装 Syncfusion Form Renderer 包
  • 用 properties、layout 和 settings 定义表单
  • 添加 required、pattern、minLength、maxLength 或自定义校验规则
  • 根据先前答案显示或隐藏字段
  • 构建依赖下拉或级联选项列表
  • 用 minMaxRange 依据另一个字段限制数值或日期范围
  • 用 expressionValue 和外部引用计算值
  • 处理 submit、reset 和自定义按钮动作
  • 用 allowMultiple 和 buttonsGroups 定义分组按钮动作
  • 用自定义 Angular 模板替换内置组件

快速开始

安装包:

ng add @syncfusion/ej2-angular-form-renderer

在 Angular 组件中导入模块和 schema 类型:

import { Component } from '@angular/core';
import { FormRendererAllModule, Schema } from '@syncfusion/ej2-angular-form-renderer';

将 schema 绑定到组件并处理 submit 事件:

<ejs-form-renderer [schema]="schema" (submit)="onSubmit($event)"></ejs-form-renderer>

定义表单 schema:

public schema: Schema = {
  version: '0.1.0',
  properties: {
    emailAddress: {
      id: 'textbox_1',
      name: 'emailAddress',
      type: 'string',
      label: 'Email Address',
      textboxType: 'email',
      required: true,
      widget: 'textbox'
    },
    submit: {
      id: 'submit_1',
      name: 'submit',
      type: 'button',
      label: 'Submit',
      buttonType: 'submit',
      widget: 'button'
    }
  },
  layout: [
    { type: 'field', propertyId: 'emailAddress' },
    { type: 'field', propertyId: 'submit' }
  ],
  settings: { name: 'Registration Form' }
};

保持表单声明式:校验、条件和表达式放在使用它们的字段上。

文档主题

入门

涉及 Angular CLI 设置与项目创建、安装包和主题 CSS、基本 schema 与提交示例,以及用 ng serve 在本地运行应用。

表单 schema 与字段模型

包括根对象结构:version、properties、layout、settings;支持的全部字段组件、数据类型及其提供的 UI 交互;按客户偏好选择组件的逐字段呈现选项;面板、表格、选项卡和卡片等布局示例,包括容器子项如何引用字段;字段 ID、名称、标签、类型及常见元数据。

校验

包括 required、minLength、maxLength、pattern 等内置规则;用 customValidation 和 valid = ... 实现自定义校验;校验在提交时还是在变更时运行。

条件行为

包括 visibleWhen、hideWhen、requiredWhen、readOnlyWhen、disabledWhen;规则 schema、嵌套 and / or 组、完整运算符列表及各规则效果;逐组件支持矩阵,说明哪些条件类型被支持或被忽略;setValueWhen 与 choiceBasedField 配置概念。

动态表达式

包括用 expressionValue 从其他字段派生值;字段引用、数组索引、分组、三元语法及算术/比较/逻辑运算符;PI、TRUE、FALSE、NULL 和 Math 等常量;聚合、数学、字符串和日期函数(含 DATEFORMAT)及其语法和返回类型。

依赖下拉

包括用 choiceBasedField 实现级联选项;primaryFieldId 和 choiceMapping;值缺失时 showAllWhenNotMapped 的行为。

基于其他字段的范围逻辑

包括使用字段引用对象的 minMaxRange;由另一个字段驱动的数值和日期范围约束;应用固定 min / max 规则与跨字段范围规则的区别。

远程数据绑定

包括 dropdown、multiselect 和 checkbox group 字段的远程选项源;URL 适配器、响应 dataPath、请求头及动态搜索/过滤值;search、sort、filter、skip 和 take 查询配置。

数据网格特性

包括静态和远程网格数据源;列编辑、校验、自定义校验和表达式;由其他表单字段驱动的条件数据源;网格 search、sort、filter 和分页配置。

表单动作与模板

包括 buttonType: 'submit'、'reset' 和 'button',以及分组按钮动作;submit / buttonClick 行为和自定义逻辑;submit、change、buttonClick、failure 和 created 事件及其参数和生命周期行为;allowMultiple 与 buttonsGroups 的项标签、动作、样式、图标和禁用状态;按组件类型、字段名称或模板 ID 使用 <e-customwidgetsetting> 的自定义组件模板;全部 CustomWidgetSettingModel 属性和 HTML sanitizer 行为;带可聚焦控件、绑定值和 setFieldValue 同步的原生或自定义组件模板;在不强制渲染时自动聚焦的情况下保留活动输入焦点;从自定义字段模板更新 Form Renderer 状态。

常见模式

  • 保持 name 值稳定,因为它们会被用作载荷键和表达式中的引用。
  • 使用 layout 对象把字段组织到面板、表格、选项卡或卡片中。
  • 当控件依赖另一个字段时,级联下拉优先用 choiceBasedField,动态 min/max 限制优先用 minMaxRange。
  • 把校验和条件逻辑存放在其影响的字段旁边,使 schema 易于推理。
  • 最终校验优先用 buttonType: 'submit';需要自定义动作逻辑时用 buttonType: 'button'。

实现检查清单

构建或修复 Form Renderer schema 时,确认:

  • 每个字段都有唯一的 name 和 id
  • layout 引用的 propertyId 都有效
  • 支持的组件与字段类型匹配
  • 条件字段使用有效的字段引用和运算符
  • 动态表达式用 {name} 语法引用已存在的字段名
  • 自定义校验为 valid 赋值 true 或字符串错误消息
  • 需要表单提交时包含提交按钮

本技能旨在帮助依据文档生成可用的 Angular Form Renderer 表单,而不虚构不支持的 schema 属性。