首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular2 - Validators.compose

Angular2 - Validators.compose
EN

Stack Overflow用户
提问于 2016-04-16 04:43:15
回答 3查看 20.6K关注 0票数 3

我遇到了Validators.compose函数的问题(没有错误,只是没有验证)

下面是我的代码:

代码语言:javascript
复制
  var validators = ()=> {
           var validatorArr = [];                
           validatorArr.push(Validators.required);
           validatorArr.push(Validators.maxLength(column.max));
           return Validators.compose(validatorArr);
    };
  var ctrl: Control = new Control(row.items[column.mapper], validators);
  row.form.addControl(column.mapper, ctrl);

当我放入Validators.required而不是validators函数时,验证起作用了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-16 05:02:46

您应该使用此代码,而不是使用回调来定义您的验证器:

代码语言:javascript
复制
var validatorArr = [];                
validatorArr.push(Validators.required);
validatorArr.push(Validators.maxLength(column.max));

var ctrl: Control = new Control(row.items[column.mapper], 
                   Validators.compose(validatorArr));
row.form.addControl(column.mapper, ctrl);

Control构造函数的第二个参数对应于可以使用compose方法创建的函数……

票数 8
EN

Stack Overflow用户

发布于 2016-04-16 05:02:34

只需使用它而不使用箭头函数:

代码语言:javascript
复制
new Control(row.items[column.mapper],Validators.compose([Validators.required, Validators.minLength(4)]));

代码语言:javascript
复制
var validators = ()=> {
     return Validators.compose([Validators.required, Validators.minLength(4)]);
}

new Control(row.items[column.mapper], validators());
票数 1
EN

Stack Overflow用户

发布于 2016-04-16 05:04:11

控件构造函数需要ValidatorFn作为参数。Validators.compose()接受一个ValidatorFn数组并返回一个ValidatorFn。但是您没有将该ValidatorFn作为参数进行传递。您正在传递一个函数,该函数在被调用时会返回一个ValidatorFn

将您的代码替换为

代码语言:javascript
复制
var validatorArr = [];                
validatorArr.push(Validators.required);
validatorArr.push(Validators.maxLength(column.max));
var validatorFn = Validators.compose(validatorArr);

var ctrl: Control = new Control(row.items[column.mapper], validatorFn);
row.form.addControl(column.mapper, ctrl);

或者,简称:

代码语言:javascript
复制
var ctrl: Control = new Control(row.items[column.mapper], 
                                Validators.compose([Validators.required, 
                                                    Validators.maxLength(column.max)]));
row.form.addControl(column.mapper, ctrl);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36656490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档