jav*_*ved 6 angular2-forms angular angular-forms
Angular Form组件类为:
export class SpecsFilterFormComponent implements OnInit {
specFilterForm: FormGroup;
cameraSizeMin = new FormControl("", [Validators.pattern("\s*|[0-9.]*")]);
cameraSizeMax = new FormControl("", [Validators.pattern("\s*|[0-9.]*")]);
constructor(private fb: FormBuilder) { }
ngOnInit() {
this.specFilterForm = this.fb.group({
cameraSize: this.fb.group(
{
cameraSizeMin: this.cameraSizeMin,
cameraSizeMax: this.cameraSizeMax,
})
});
this.specFilterForm.valueChanges.debounceTime(500).filter(
formData => this.specFilterForm.valid)
.subscribe(
formData => {
console.log("do something after validation")
});
}
}
Run Code Online (Sandbox Code Playgroud)
我想添加一个验证以确保cameraSizeMax> = cameraSizeMin,以及如何在控件的cameraSizeMin和cameraSizeMax中应用此验证。
我创建了一个应用于完整表单组的自定义验证器,然后在表单控件中添加错误:
以下将cameraSizeMin设置为无效。
class CustomValidator {
static validate(abstractForm: FormGroup): {[key: string]: any} => {
let cameraSizeMin = abstractForm.get("cameraSizeMin");
let cameraSizeMax = abstractForm.get("cameraSizeMax");
//validation logic in condition below
if (true) {
cameraSizeMin.setErrors({"customValidation": true});
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式将其注册到 formGroup:
this.specFilterForm = this.fb.group({
cameraSize: this.fb.group(
{
cameraSizeMin: this.cameraSizeMin,
cameraSizeMax: this.cameraSizeMax,
}, {validator: CustomValidator.validate}
)
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3652 次 |
| 最近记录: |