【发布时间】:2017-10-06 08:40:48
【问题描述】:
我已经定义了一个自定义验证器,如下所示
import { Directive, forwardRef } from '@angular/core';
import { NG_VALIDATORS, FormControl } from '@angular/forms';
function validateRewardAmountFactory(goalAmount: number, quantity: number) {
return (c: FormControl) => {
const rewardAmount = c.value;
const isValidAmount = rewardAmount * quantity < goalAmount ? true : false;
return isValidAmount ? null : { validateAmount: true };
};
}
@Directive({
selector: '[validateAmount][ngControl][validateAmount][ngModel],[validateAmount][ngFormControl]',
providers: [
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => RewardAmountValidator), multi: true }
]
})
export class RewardAmountValidator {
validator: Function;
constructor(goalAmount: number, quantity: number) {
this.validator = validateRewardAmountFactory(goalAmount, quantity);
}
validate(c: FormControl) {
return this.validator(c);
}
}
然后我在我的模块中声明了这个指令
@NgModule({
declarations: [RewardAmountValidator, ...]
})
现在我想以我的反应形式使用这个自定义验证器,我正在这样做
return this.fb.group({
'id': [project.id, Validators.required],
'type': ['reward', Validators.required],
'rewardAmount': ['', validateAmount(this.goalAmount, this.quantity)]
});
}
但它给了我错误Cannot find name 'validateAmount'
那么在我的响应式表单中使用自定义验证器的正确方法是什么。
【问题讨论】:
标签: angular angular2-forms angular2-directives