angular - 如何应用自定义表单验证 [Angular]
问题描述
我想学习表单验证。所以我创建了一个简单的注册,其中包含非常基本的详细信息,例如名字、姓氏、电子邮件、通行证和确认通行证。验证也很简单,只有两个标准:
- 最小长度(4)
- 模式('[A-Za-z]{4,15}')
我有一个提交按钮,它最初是禁用的,但如果所有字段都有效,它就会激活。我的问题是,即使在所有正确的值之后,我的提交按钮仍然被禁用。代码有点长。
注册组件.ts
import { Component, OnInit } from '@angular/core';
...
@Component({
...
})
export class RegisterComponent implements OnInit {
registerUserData ={
firstName: "",
lastName: "",
email: "",
password: "",
userid: ""
};
form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
firstname:['', [Validators.required,Validators.minLength(4), Validators.pattern('[A-Za-z]{4,15}')]],
lastname:['', [Validators...
});
this.form.controls.password.valueChanges
.subscribe(
x => this.form.controls.cnfpass.updateValueAndValidity()
)
}
ngOnInit() {
}
registerUser() {
if (!this.form.valid) return;
this.form.markAsTouched();
this.registerUserData.firstName=this.form.value.firstname;
...
console.log(this.registerUserData);
}
}
HTML 甚至更长。所以我创建了一个 Stackblitz(我认为这对你来说会更方便)。这是链接:Stackblitz
请纠正我的错误。
PS:控制台没有错误。一切看起来都很干净。
解决方案
在第 28 行,你把你的结束括号放在了不好的地方
password: ['', [Validators.required, Validators.minLength(4)], Validators.pattern('[A-Za-z0-9]{4,25}')],
/\/\/\
像这样它会运作良好
password: ['', [Validators.required, Validators.minLength(4), Validators.pattern('[A-Za-z0-9]{4,25}')]],
推荐阅读
- flutter - TabBar设置tabviews的设置状态
- android - 未找到方向性小部件。RichText 小部件需要 Directionality 小部件祖先
- java - Spring Hibernate:尽管已配置 @Transactional 在 Spring Data JPA 中不起作用
- java -
http://java.sun.com/jsp/jstl/core 无法在 web.xml 或随此应用程序部署的 jar 文件中解析 - apache-spark - spark处理csv文件中的json数据
- r - 无法在 R 中获取 AOV 的残差
- scala - 如何在 Scala 应用程序中使用独立的 WSClient
- google-places-api - 谷歌地图中的大气和来自菜单照片选项卡
- go - 向两个通道发送数据,第二个通道可能会先接收数据
- json - 使用 jq 获取所有条目及其各自的键