我有一个表单数组,我希望将其限制为仅由用户生成的5个输入元素 并且我的表单具有以下定义
createskillForm()
{
this.skillForm=this.formBuilder.group({
skills:this.formBuilder.array([this.createskillFeild()],Validators.minLength(1),Validators.maxLength(5))
});
}
我尝试用minlength进行更改,但是在控制台中显示以下错误:- src / app / components / com-profile / com-profile.component.ts(47,89)中的RROR:错误TS2345:类型'ValidatorFn'的参数不能分配给类型'AsyncValidatorFn |的参数。 AsyncValidatorFn []'。 类型“ ValidatorFn”不可分配给类型“ AsyncValidatorFn”。 类型'ValidationErrors'不能分配给类型'Promise |可观察的”。 无法将类型“ ValidationErrors”分配给类型“可观察”。 类型“ ValidationErrors”中缺少属性“ _isScalar”。 我该怎么做才能限制仅向用户添加五项技能?
答案 0 :(得分:0)
将验证器包装在数组中。您收到的错误是因为maxLength不是异步验证器,它是您要放入的变量。
constructor(formState: any = null, validatorOrOpts?: ValidatorFn | >AbstractControlOptions | ValidatorFn[], asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[])
这是下面的正确代码。不确定这是否可以解决您要解决的问题,但可以解决您目前遇到的错误。
this.skillForm = this.formBuilder.group({
skills:this.formBuilder.array([this.createskillFeild()], [ Validators.minLength(1), Validators.maxLength(5)] )
});