Angular Reactive Forms -- Model-Driven Forms响应式表单
Angular 4.x 中有两种表单:
Template-Driven Forms (模板驱动表单) 的特点
Reactive Forms (响应式表单) 的特点
使用reactive forms 表单前,我们必须在 import { ReactiveFormsModule } @NgModule({
imports: [ ...,ReactiveFormsModule ],declarations: [...],bootstrap: [...] }) export <span style="color: #0000ff">class AppModule {}
FormControl 和 FormGroup FormControl - 它是一个为单个表单控件提供支持的类,可用于跟踪控件的值和验证状态,此外还提供了一系列公共API。 使用示例: .myControl = FormControl(
FormGroup - 包含是一组 FormControl 实例,可用于跟踪 FormControl 组的值和验证状态,此外也提供了一系列公共API。 使用示例: .myGroup = FormControl( FormControl(
现在我们已经创建了 ngModel和 上面示例中,我们必须使用 FormGroup -> -> ->
signup.interface.ts export
与之对应的表单结构如下: FormGroup -> -> -> -> ->
是的,我们可以创建嵌套的 FormGroup 集合!让我们更新一下组件 (不包含初始数据): import { Component,OnInit } @Component({...})
export <span style="color: #0000ff">class<span style="color: #000000"> SignupFormComponent implements OnInit { user: FormGroup; ngOnInit() { <span style="color: #0000ff">this.user = <span style="color: #0000ff">new<span style="color: #000000"> FormGroup({ name: <span style="color: #0000ff">new FormControl(<span style="color: #800000">''<span style="color: #000000">),account: <span style="color: #0000ff">new<span style="color: #000000"> FormGroup({ email: <span style="color: #0000ff">new FormControl(<span style="color: #800000">''<span style="color: #000000">),confirm: <span style="color: #0000ff">new FormControl(<span style="color: #800000">''<span style="color: #000000">) }) }); } } 如果我们想要设置初始数据,我们可以按照上述示例进行设置。通常情况下,我们通过服务端提供的 API 接口来获取表单的初始信息。 绑定FormGroup模型 现在
FormGroup -> -> -> -> ->
<span style="color: #008000">// <span style="color: #008000"> DOM bindingsformGroup -> <span style="color: #800000">'<span style="color: #800000">user<span style="color: #800000">'<span style="color: #000000"> formControlName -> <span style="color: #800000">'<span style="color: #800000">name<span style="color: #800000">'<span style="color: #000000"> formGroupName -> <span style="color: #800000">'<span style="color: #800000">account<span style="color: #800000">'<span style="color: #000000"> formControlName -> <span style="color: #800000">'<span style="color: #800000">email<span style="color: #800000">'<span style="color: #000000"> formControlName -> <span style="color: #800000">'<span style="color: #800000">confirm<span style="color: #800000">' 当使用模板驱动的表单时,为了获取 {{ user.value | json }}
跟模板驱动的表单一样,我们可以通过 需要注意的是,我们使用 export
上面代码中,我们使用 export .user.value,
表单的数据绑定方式和提交逻辑已经介绍完了,是该介绍表单实际应用中,一个重要的环节 — 表单验证。 接下来我们来为表单添加验证规则,首先我们需要从 .user = FormControl(,[Validators.required,Validators.minLength( FormControl( FormControl(
通过以上示例,我们可以看出,如果表单控制包含多种验证规则,可以使用数组声明多种验证规则。若只包含一种验证规则,直接声明就好。通过这种方式,我们就不需要在模板的输入控件中添加 那么问题来了,我们要如何获取表单控件的验证信息?我们可以使用模板驱动表单中介绍的方式,具体如下:
此外我们也可以使用 完整代码: import { Component,FormGroup,Validators }
.user = FormControl(,account: FormControl(
功能是实现了,但创建 首先我们需要从 import { FormBuilder,Validators } export <span style="color: #0000ff">class<span style="color: #000000"> SignupFormComponent implements OnInit {
user: FormGroup; constructor(<span style="color: #0000ff">private<span style="color: #000000"> fb: FormBuilder) {} ... } 使用FormBuilder: .user = ,Validators.minLength(
转自:https://segmentfault.com/a/1190000009041192 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |