我正在尝试实现自定义验证规则来验证复选框是否被选中。
但是我遇到了一个错误
error_handler.js:46 EXCEPTION: _this.subscribe is not a function
当我尝试添加自定义验证器时
validator.ts
import {Control} from "angular/common";
interface ValidationResult {
[key: string]: any;
}
export class CustomValidators {
static validateChecked(c: Control): ValidationResult {
return (c.value);
}
}
Component.ts
import {Component} from '@angular/core';
import {FormBuilder, FormGroup, Validators, FormControl} from '@angular/forms';
import {CustomValidators} from './validators.ts'
@Component({
selector: 'wizard',
templateUrl: './template.html',
})
/**
* @todo - check how first select is automatically active
* @todo - export form presets to form class
*/
export class Wizard {
myForm: FormGroup;
privacy: boolean;
// Prefilling the FormBuilder
constructor(private horizonService: HorizonService, fb: FormBuilder) {
this.myForm = fb.group({
'privacy': ['', Validators.required, CustomValidators.validateChecked],
});
}
onSubmit(values: string): void {
console.log('you submitted value: ', values);
}
}
最佳答案
如果您需要多个验证器,您应该使用 Validators.compose
。所以你的代码应该是这样的:
constructor(private horizonService: HorizonService, fb: FormBuilder) {
this.myForm = fb.group({
'privacy': ['', Validators.compose([Validators.required, CustomValidators.validateChecked])],
});
}
您可以阅读一篇关于验证器的精彩文章 here .
关于Angular 2 - 异常 : _this. 订阅不是函数 - 自定义验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39701725/