致力于angular2 beta Forms
. 经过大量的搜索后发现没什么用处 . 希望这里有人帮助我 .
基本上我有点困惑如何以适当的方式使用angular2中的表单(即使用ngControl,ngFormControl等) . 我在这里创建了一个plnkr
http://plnkr.co/edit/fictP28Vqn74YqrwM1jW?p=preview
这是我的.html代码: -
<form class="form-horizontal" id='myForm' role="form" [ngFormModel]="CreateGroup">
<div class="col-md-7">
Name: <input type="text" id="name" placeholder="Name" class="form-control" ngControl="name">
</div>
<div class="col-md-7">
Password: <input type="text" id="password" placeholder="password" class="form-control" ngControl="password">
</div>
<div class="col-md-7">
<input type="radio" name='type'>Btech
<input type="radio" name='type'>Mtech
</div>
<div class="col-md-7">
<input type="checkbox" >Math
<input type="checkbox">English
<input type="checkbox">Science
</div>
<br>
<div class="col-md-7">
<select #selectOption (change)='getValue(selectOption.value)' class='form-control'>
<option value='1'>One Value</option>
<option value='2'>two Value</option>
<option value='3'>Three Value</option>
</select>
</div>
</form>
<button type="button" (click)="addNewGroup(CreateGroup.value)" class="btn btn-primary btn-lg"> Create </button>
和.ts代码在这里: -
CreateGroup: FormBuilder;
constructor(fb: FormBuilder){
console.log('form called');
this.CreateGroup = fb.group({
'name': new Control(),
'password': new Control()
})
}
addNewGroup(value) {
console.log(value);
document.getElementById("myForm").reset();
}
getValue(value){
console.log(value);
}
我无法理解如何从完整的形式获取值作为对象 . 我的表单包括文本框,复选框,收音机和选择选项 . 现在这里是我的一些问题 .
Q1: - 如何获取无线电的值,复选框,使用angular2中的表格选择 . (我不想为我在plnkr中使用的select选项调用 change
hook) .
Q2: - 与提交数据后的plnkr一样,控制权尚未重置 . 对形式的控制仍然存在,但形式似乎重置 . 那么如何重置angular2中窗体的控件 .
问题3: - 什么是在表单中使用验证的最佳方法(如果有人有plnkr显示验证请发布) .
我已经阅读过关于表格的文章,但仍然没有成功通过单选复选框和选择选项 .
http://blog.ng-book.com/the-ultimate-guide-to-forms-in-angular-2
2 回答
将表单控件绑定到域模型
在组件中初始化域模型:
使用
ngModel
将表单控件绑定到具有双向模型绑定的域模型 .单击该按钮时,将域模型作为参数传递:
实现
addNewGroup
方法 . 要重置表单,请使用新模型更新域模型:Demo Plnkr
向表单添加验证器
要添加表单验证,请将
ngFormModel
添加到表单元素并将ngControl
装饰器添加到每个输入元素(ngControl
是[ngFormControl]="studentForm.controls['name']"
的语法糖):ngFormModel
映射到组件的ControlGroup
属性 . 使用配置对象初始化ControlGroup
,该属性名称对应于ngControl
属性中的值:在上面的示例中,内置的
required
验证器用于指示名称和密码是必填字段 . 然后,您可以使用表单模型上的valid
属性检查整个表单是否有效:Demo Plnkr
显示验证消息
如果要绑定到视图中的验证消息,可以将Control导出为本地模板变量并访问它的验证属性:valid,dirty,pending,pristine和errors对象 .
Demo Plnkr
如果要创建自己的自定义验证器,请创建一个返回验证对象的方法,该对象的
boolean
属性对应于验证错误 . 例如,您可以创建一个验证器,以确保密码的第一个字母必须是数字:将验证器组合成一个验证器,并使用内置的
Validators.compose
将其传递给Control
构造函数:如果在同一个
Control
上有多个验证器,请使用errors
对象来区分它们:Demo Plnkr
绑定到单选按钮列表
在Angular2中,尚未绑定到单选按钮列表的内置支持 . 查看此帖子以了解如何执行此操作:
Angular2 - Radio Button Binding
UPADTED - ANGULAR2 RC4形式
TL; DR;
在发布angular2 RC表格之后,角度2表格已经发生了很多变化 . 其中有一些是重大突破性变化,其中一些可以忽略不计,这里是使用angular2形式的一些关键点 .
基本上有两种方法可以在Angular 2中构建表单,即模板驱动和模型驱动 . 使用表格的基本结构如下: -
运行
npm install @angular/forms --save
为您的应用配置bootstrap方法如下:
使用
REACTIVE_FORM_DIRECTIVES
到组件指令来使用表单功能 .创建
FormGroup
类型的Form变量使用
Validators
进行验证 .除此之外 FormBuilder 不是构建模型驱动形式的强制性,但它简化了语法 . formbuilder提供了三种基本语法/方法:
group :构建一个新的表单组 .
array :构造一个新的表单数组 .
control :构造一个新的表单控件 .
这些是在angular2 RC中使用表单的基本步骤 .
angular2形式的有用资源:
https://scotch.io/tutorials/using-angular-2s-model-driven-forms-with-formgroup-and-formcontrol
https://scotch.io/tutorials/how-to-build-nested-model-driven-forms-in-angular-2
现场演示在这里相同
angular2 Forms的工作演示