在Array.ForEach中调用一个函数

时间:2016-08-17 14:38:40

标签: angular typescript ionic-framework ionic2

我正在Angular2 / Ionic2中生成一个表单,我已经关注了Angular站点上的dynamic form tutorial。但是,根据我的需要,我需要更多验证而不是仅仅需要验证。因此这段代码。

doGenerateKidsBasicFormWithNameAndAge(params: any){
let kidsData:any = {};

params.forEach(question => {

        kidsData[question.id] = this.doDecideValidation(question)
        });
  return new FormGroup(kidsData);
}

这是确定将应用何种验证类型的函数。

doDecideValidation(question){
    if(question.type === "text"){
      new FormControl(question || '', Validators.compose([Validators.required, Validators.minLength(question.minLength), Validators.maxLength(question.maxLength), Validators.pattern('[a-zA-Z ]*')]));
    }else if(question.type === "number"){
      new FormControl(question || '', Validators.compose([Validators.required]));
    }else {
      new FormControl(question || '');
    }
  };

当我这样做时,我收到错误。

TypeError: Cannot read property 'setParent' of undefined

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

继续我的评论,在对Typescript Types做一些阅读之后,看一下你给出的表格示例,我可能已经找出了问题所在。

您对.forEach()进行了params: any操作,这是一个可能是也可能不是数组的变量。尝试单击[],如此:params: any[],看看是否有帮助。

答案 1 :(得分:0)

也许你只需要指定rith this(forEach函数中的第二个参数)?

The invocation context (this) of the forEach function call