javascript – 表单验证不是有角度的?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 表单验证不是有角度的?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2550字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 表单验证不是有角度的?](/upload/InfoBanner/zyjiaocheng/703/ad032840a8d841de83de6c589771052a.jpg)
我想检查下拉列表是否为空.
需要显示所需的消息和
如果不为空,请启用提交按钮.
如果为空,请禁用提交按钮.下面是我的HTML
下面是我的HTML
<form [formGroup]="myForm" (ngSubmit)="save()" >
<mat-form-field>
<mat-select formControlName="name" placeholder="Element List" (selectionChange)="elementSelectionChange($event)" required>
<mat-option *ngFor="let element of Elements" [value]="element.name">
{{ element.name }}
</mat-option>
</mat-select>
<mat-error *ngIf="myForm.hasError('required', 'name')">Please choose an name</mat-error>
</mat-form-field>
<mat-form-field>
<mat-select formControlName="symbol" placeholder="Symbol List" required>
<mat-option *ngFor="let element of selectedElementSymbol" [value]="element.symbol">
{{ element.symbol }}
</mat-option>
</mat-select>
<mat-error *ngIf="myForm.hasError('required', 'symbol')">Please choose an symbol</mat-error>
</mat-form-field>
<div mat-dialog-actions>
<button mat-button (click)="onNoClick()">Cancel</button>
<button type="submit" mat-button cdkFocusInitial>Add</button>
</div>
</form>
下面是我的组件
export class DialogOverviewExampleDialog {
myForm: FormGroup;
symbol = new FormControl('', Validators.required);
name = new FormControl('', Validators.required);
constructor(
public dialogRef: MatDialogRef<DialogOverviewExampleDialog>,
@Inject(MAT_DIALOG_DATA) public data: any,
private formBuilder: FormBuilder) {
this.myForm = this.formBuilder.group({
name: [this.name],
symbol: [this.symbol],
});
}
save() {
console.log(this.myForm.value);
}
}
解决方法:
您当前正在将formcontrol分配给formcontrol,而您希望为表单控件分配值.下面是将表单控件名称分配给formcontrol名称:
错误:
name = new FormControl('', Validators.required);
this.myForm = this.formBuilder.group({
'name': [this.name, Validators.required],
// ...
});
所以相反,只需声明名称,使用值执行您想要的操作,然后将该值分配给表单控件…
正确:
name: string;
this.myForm = this.formBuilder.group({
'name': [this.name, Validators.required],
// ...
});
然后在提交按钮上添加[disabled] =“!myForm.valid”.
至于另一个问题,默认情况下Angular材质不会显示错误消息,除非触摸了该字段,因此您需要有一个自定义错误状态匹配器,即使未触及该字段也会显示错误(如果这是您想要的):
import {ErrorStateMatcher} from '@angular/material/core';
export class MyErrorStateMatcher implements ErrorStateMatcher {
isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {
return !!(control.invalid);
}
}
并在您的TS中,声明错误状态匹配器:
matcher = new MyErrorStateMatcher();
并在模板中使用:
<mat-select formControlName="name" ... [errorStateMatcher]="matcher">
这是你的
内容总结
以上是互联网集市为您收集整理的javascript – 表单验证不是有角度的?全部内容,希望文章能够帮你解决javascript – 表单验证不是有角度的?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。