如何限制表格数组的长度?

时间:2019-04-23 22:41:37

标签: javascript angular typescript

我有一个表单数组,我希望将其限制为仅由用户生成的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”。 我该怎么做才能限制仅向用户添加五项技能?

1 个答案:

答案 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)] )
      });