Angular 中的条件验证
Conditional validation in Angular
我想在这里验证开始年龄和结束年龄的值。
规则:
年龄从应该小于年龄到。
年龄 To 必须大于年龄
Angular 6.0.7版本
这是定义的表单组,还有其他表单值,这里跳过不相关的条目。
myForm = new FormGroup({
'ageFrom': new FormControl( ),
'ageTo': new FormControl(),
});
这是 html 搜索按钮应该被禁用如果验证失败并且应该显示错误消息
<input type="number" class="form-control" formControlName="ageFrom" >
<input type="number" class="form-control" formControlName="ageTo" >
<button type="submit" class="btn btn-primary ripple" click)="search()">Search</button>
已尝试自定义验证器,但未显示消息,让我知道此用例是否需要自定义验证器?
尝试过
Angular 6, 以下选项可用
<input min="0" max="5">
,但同样他们可以输入任何数字。
模板
<p style="color: red" *ngIf="myform.invalid">{{myform.errors | json}}</p>
<form [formGroup]="myform">
<label>
from:
<input type="number" formControlName="from">
</label>
<label>
to:
<input type="number" formControlName="to">
</label>
<button type="submit" [disabled]="myform.invalid">go</button>
</form>
控制器
import { Component } from '@angular/core';
import { FormBuilder, AbstractControl, ValidationErrors } from "@angular/forms";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
myform = this.builder.group({
from: '',
to: ''
}, {
validator: this.isValid
});
constructor(private builder: FormBuilder) {
}
isValid(c: AbstractControl): ValidationErrors {
let diff = c.value.to - c.value.from;
return (diff < 18)
? { 'young': 'must be 18 years or older' }
: null;
}
}
我想在这里验证开始年龄和结束年龄的值。
规则:
年龄从应该小于年龄到。 年龄 To 必须大于年龄
Angular 6.0.7版本
这是定义的表单组,还有其他表单值,这里跳过不相关的条目。
myForm = new FormGroup({
'ageFrom': new FormControl( ),
'ageTo': new FormControl(),
});
这是 html 搜索按钮应该被禁用如果验证失败并且应该显示错误消息
<input type="number" class="form-control" formControlName="ageFrom" >
<input type="number" class="form-control" formControlName="ageTo" >
<button type="submit" class="btn btn-primary ripple" click)="search()">Search</button>
已尝试自定义验证器,但未显示消息,让我知道此用例是否需要自定义验证器?
尝试过 Angular 6, 以下选项可用
<input min="0" max="5">
,但同样他们可以输入任何数字。
模板
<p style="color: red" *ngIf="myform.invalid">{{myform.errors | json}}</p>
<form [formGroup]="myform">
<label>
from:
<input type="number" formControlName="from">
</label>
<label>
to:
<input type="number" formControlName="to">
</label>
<button type="submit" [disabled]="myform.invalid">go</button>
</form>
控制器
import { Component } from '@angular/core';
import { FormBuilder, AbstractControl, ValidationErrors } from "@angular/forms";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
myform = this.builder.group({
from: '',
to: ''
}, {
validator: this.isValid
});
constructor(private builder: FormBuilder) {
}
isValid(c: AbstractControl): ValidationErrors {
let diff = c.value.to - c.value.from;
return (diff < 18)
? { 'young': 'must be 18 years or older' }
: null;
}
}