Angular动态表单生成(二)

ng-dynamic-forms源码分析

在两个开源项目中,ng-dynamic-forms的源码相较于form.io,比较简单,所以我还勉强能看懂,下面就我自己的理解进行简单分析,若有不对的地方,请大家多多指正。

整体结构分析

ng-dynamic-forms的主要代码均分布在packages文件夹下,其中的Core是各种控件的抽象,其他的文件夹是各个UI框架的具体封装,每个文件夹都是一个可独立编译运行的项目。

Core文件夹内容分析

Core文件夹做的事情,基本上是对于各种组件、布局的抽象,说简单点,就是定义了,这个框架有哪些组件,这些组件都有哪些事件、哪些方法。接下来我们具体分析一下:

utils文件夹:

这个文件夹最不重要,是一些工具类的封装,无需多解释

component/dynamic-form-component文件:

这个文件定义了表单(<form></form>)的抽象类DynamicFormComponent,也就是一组表单控件的集合,将来每种UI库的都会有该类的子类,并根据需要重写其中的一些方法和属性。

它实现了一些基础的事件和属性。

事件:blur,change,focus,customerEvent

属性:formGroup、formModel、formLayout

component/dynamic-form-control.component文件:

这个文件定义了表单的表单元素的抽象类DynamicFormControlComponent,将来每个UI控件的具体类,都要继承自该类,并更新需要进行重写和扩展。

该类具有以下事件和属性:

事件:onControlValueChanges,onModelValueUpdates,onModelDisabledUpdates,onValueChange,onBlur,onFocus,onCustomEvent

属性:errorMessages,showHint,hasList,isInvalid,isValid,showErrorMessages,templateList

decorator/serializable.decorator文件:

定义了一个公共的装饰器,用于方便传入Key-Value形式的属性。

model文件夹:

model文件夹是整个Core文件夹中,比较重要的一块,他定义了动态表单所支持的表单元素的和一些表单包裹元素。

总体来说,ng-dynamic-forms将控件分为如下几类:

输入类:文本框,文本域,富文本编辑框

单值类:包含所有的输入类、选择类控件,另外还有颜色选择器、日期选择、文件选择组件、评分组件、滑动组件

选择类:复选框(CheckBox)、开关(Switch)

选项类:下拉框、单选框

日期类:日期选择组件、时间选择组件

文件类:文件上传组件

布局类:FormGroup、FormArrary

原文地址:https://www.cnblogs.com/baiyunchen/p/8469665.html

时间: 2024-10-08 06:49:01

Angular动态表单生成(二)的相关文章

Angular动态表单生成(七)

动态表单生成之拖拽生成表单(上) 这个功能就比较吊炸天了,之前的六篇,都是ng-dynamic-forms自带的功能,可能很多的说明官方的文档都已经写了,我只是个搬运工,而在这篇文章中,我将化身一个工程师,来自己创造点东西,让我们一起来期待吧~ 导入相关类库 拖拽功能看似吊炸天,其实HTML5中已经有一套标准来定义它了,所以并没有那么难以实现,这篇关于拖拽的文章写得还可以,大家可以先看看:http://www.zhangxinxu.com/wordpress/2011/02/html5-drag

Angular动态表单生成(四)

ng-dynamic-forms实践篇(下) 我们接着上篇,先把小目标中的所有字段都定义出来 这部分就是苦力活儿了,把KendoUiComponent中的formModel完善即可: 1 formModel: DynamicFormControlModel[] = [ 2 new DynamicInputModel({ 3 id: 'firstName', 4 label: '姓名', 5 placeholder: '请输入用户姓名' 6 }), 7 new DynamicRadioGroupM

动态表单生成

1,创建sql drop table QUYJ_CHANGE_CARD; CREATE TABLE QUYJ_CHANGE_CARD ( ID VARCHAR(36) NOT NULL, phone VARCHAR2(100) NOT NULL, CITY VARCHAR2(50) NOT NULL, CREATE_BY VARCHAR2(32), CREATE_DATE DATE, CREATE_NAME VARCHAR2(32), UPDATE_BY VARCHAR2(32), UPDATE

angularjs 动态表单, 原生事件中调用angular方法

https://www.cnblogs.com/wancy86/p/7834067.html 1. 原生事件中调用angular方法, 比如 input的onChange事件想调用angular里面定义的方法 - onChange="angular.element(this).scope().uploadPhoto(this)" <div class="col-md-2"> <input onChange="angular.element

vue动态表单

项目需求,需要根据后台接口返回数据,动态添加表单内容 说明:此组件基于Ant Design of Vue 目前支持六种表单控件:文本输入框(TextInput).文本域输入框(TextArea).下拉选择框(SelectInput).下拉多选(SelectMultiple).日期(DataPicker).日期精确到秒(DataPickerSen) 一.文本框 1 <template> 2 <a-form-item :label="label" v-bind="

javaweb日记选(动态表单及表的实现)

Java语言也可以创建动态表单,如javaweb创建表单及表 应用场景 项目中往往需要动态的创建一个表单,或者添加一个新的数据模板,这时候因为需要在运行时动态的创建表以及动态的维护表字段甚至表关系 使得普通java解决方案变得困难重重. 实现工具 Hibernate + Spring + Groovy +Freemarker Hibernate 作用很简单负责创建数据库表这样可以避免我们自己去写复杂的sql和判断. Spring 作为桥梁起到连接纽带的作用 Groovy 做为动态语言,在项目运行

如何在.Net Core MVC中为动态表单开启客户端验证

非Core中的请参照: MVC的验证 jquery.validate.unobtrusive mvc验证jquery.unobtrusive-ajax 参照向动态表单增加验证 页面引入相关JS: <script src="~/lib/jquery/dist/jquery.js"></script> <script src="~/lib/jquery-validation/dist/jquery.validate.js"></

动态表单数据库设计

需求: 能够根据数据库在界面动态显示表单,包括表单类型.名称等,并且必须提供 添加新表单,修改表单等功能. 为了满足客户不断的需求变化,有时候需要为某商品增加.修改.删除.属性,这样的话以往的数据库表就很难实现, 因为表的字段是定死了 如果你需要增加一个属性的时候 ,就必须修改表,听说这是不允许的~~. 所以我们要设计一个灵活的数据库 下面以电脑设备为例: pc 现有属性 name cpu ram disk 现在我们要为pc添加一个 mainboard 属性. 既然必须提供增加表单,那么我们创建

表单(二)多个表单项的动态校验总结

任务目的 加强对JavaScript的掌握 熟悉常用表单处理逻辑 任务描述 如示例图中所示,基于上一个任务,在页面中添加多个表单 要求: 表单获得焦点时,下方显示表单填写规则 表单失去焦点时校验表单内容 校验结果正确时,表单边框显示绿色,并在下方显示验证通过的描述文字 校验结果错误时,表单边框显示红色,并在下方显示验证错误的描述文字 点击提交按钮时,对页面中所有输入进行校验,校验结果显示方式同上.若所有表单校验通过,弹窗显示"提交成功",否则显示"提交失败" 任务注