书签 分享 收藏 举报 版权申诉 / 15

类型Angular 27 初步了解表单模板驱动及数据驱动及脱坑要点.docx

  • 文档编号:28506133
  • 上传时间:2023-07-18
  • 格式:DOCX
  • 页数:15
  • 大小:166.65KB

提交

有两种方式处理来对上面的表单做校验;

在Submit()函数内,在点击提交的时候对整个表单一一去判断,传统方式基本这样

每个控件输入的时候对应去触发对应的事件做校验,比如[ngModelChange]来处理双向绑定的值校验

数据驱动(ReactiveForm)

响应式表表单:

原理是一开始就构建整个表单,表单的值通过特殊指令formControlName一一关联(类似ngModel);

相关名词:

-FormGroup:

用来追踪表单控件有效状态及值=》可以理解为获取且可以操作整个表单的数据

-FormBuilder:

表单数据构建工具[构建初始表单],简化构建代码(包括了newFormGroup(),newFormControl(),newFormArray()),FormGroup()内置多种校验方式

-formControlName:

同步与FormGroup构建表单内相同字段的值!

项目中的案例

html

showLoading">

欢迎登录

form.controls.UserName.invalid&&form.controls.UserName.value,'has-success':

form.controls.UserName.valid&&form.controls.UserName.value}">

账号不符合规范

账号符合规范

form.controls.PassWord.invalid&&form.controls.PassWord.value,'has-success':

form.controls.PassWord.valid&&form.controls.PassWord.value}">

密码不符合规范,请重新输入

密码符合规范

记住账号

--忘记密码-->

{{messageTips}}

登录

没有账号?

点击用户登记

component.ts

import{Component,OnInit,OnDestroy}from'@angular/core';

import{FormGroup,Validators,FormBuilder}from'@angular/forms';//引入表单的一些特性

import{Router}from'@angular/router';

import{AccountService}from'../../services/account.service';

import{environment}from'../../../../../environments/environment';

import{flyIn}from'../../../../animation/flyIn';

import{Observable}from'rxjs/Observable';

@Component({

selector:

'app-login',

templateUrl:

'./ponent.html',

styleUrls:

['./ponent.scss'],

animations:

[flyIn]

})

exportclassLoginComponentimplementsOnInit,OnDestroy{

publicform:

FormGroup;//表单对象

publicshowLoading=false;

publicmessageTips:

string;

publiclogin_subscribe:

any;

//Validators的写法注意事项

//v2.x版本这样的写法是可行的,v4有调整,不然不会生效

//'UserName':

'',[Vpose([Validators.minLength(6)]

//v4+,第一位的''代表这个元素初始化构建为空值,类似未输入状态

//'UserName':

['',Vpose([Validators.minLength(6)]

//Validators可选参数

//1.required:

必须验证的,返回布尔值

//2.minLength:

最小长度

//3.maxLenght:

最大长度

//4.nullValidator:

空值判断

//5.coompose:

多重判断组合,下面有写法

//6.pattern是支持正则模式,正则谨记转义转义转义

constructor(privatefb:

FormBuilder,privaterouter:

Router,privateaccount:

AccountService){

this.form=fb.group({

'UserName':

['',Vpose([Validators.minLength(6)||Validators.pattern('(0|86|17951)?

(-)?

1[3,4,5,7,8,9]\\d{9}')||Validators.pattern('[\\.a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+')])],

'PassWord':

['',Vpose([Validators.required,Validators.pattern('\\w{8,16}')])],

'rememberAccount':

['']

});

}

ngOnInit(){

}

//登录事件

onSubmit(e){

this.showLoading=true;

this.login_subscribe=this.account.login(e.value).subscribe((res)=>{

console.log('省略。

')

},(err)=>{

this.showLoading=false;

});

}

ngOnDestroy(){

if(this.login_subscribe){

this.login_subscribe.unsubscribe();

}

}

}

效果图

嵌套表单

有些时候我们接口数据层次不可能只有一层,出现两层三层都有可能;

这时候需要我们构建一个嵌套表单。

html

v2-的写法:

表单的取值可以用controls直接点出来

form.controls.RuleContent.controls.FenceName.invalid&&form.controls.RuleContent.controls.FenceName.value,'has-success':

form.controls.RuleContent.controls.FenceName.valid&&form.controls.RuleContent.controls.FenceName.value}">

速度栅栏名称

不超过十个字

form.controls.RuleContent.controls.MaxSpeed.invalid&&form.controls.RuleContent.controls.MaxSpeed.value,'has-success':

form.controls.RuleContent.controls.MaxSpeed.valid&&form.controls.RuleContent.controls.MaxSpeed.value}">

速度阈值

km/h

保存

取消

v4+的写法:

嵌套表单的取值必须用.get()来获取,不然会报错误,具体原因是api改动了,看下官方文档就知道,改动了挺多(不仅仅这块)

form.get('RuleContent.FenceName').invalid&&form.get('RuleContent.FenceName').value,'has-success':

form.get('RuleContent.FenceName').valid&&form.get('RuleContent.FenceName').value}">

速度栅栏名称

不超过十个字

form.get('RuleContent.MaxSpeed').invalid&&form.get('RuleContent.MaxSpeed').value,'has-success':

form.get('RuleContent.MaxSpeed').valid&&form.get('RuleContent.MaxSpeed')ue}">

速度阈值

km/h

保存

取消

components.ts

import{Component,OnInit}from'@angular/core';

import{Router,ActivatedRoute}from'@angular/router';

import{FormGroup,FormControl,Validators,FormBuilder}from'@angular/forms';//

举报
举报
版权申诉
版权申诉
word格式文档无特别注明外均可编辑修改;预览文档经过压缩,下载后原文更清晰! 立即下载
配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
Angular 27 初步了解表单模板驱动及数据驱动及脱坑要点 初步 了解 表单 模板 驱动 数据 要点
提示  冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:Angular 27 初步了解表单模板驱动及数据驱动及脱坑要点.docx
链接地址:https://www.bdocx.com/doc/28506133.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2022 冰点文档网站版权所有

经营许可证编号:鄂ICP备2022015515号-1

收起
展开