加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular 4:“AbstractControl”类型上不存在属性“push”和“co

发布时间:2020-12-17 07:22:13 所属栏目:安全 来源:网络整理
导读:我从这个链接 http://plnkr.co/edit/yV94ZjypwBgHAlb0RLK2?p=preview实现了代码,但得到了推送和控制错误. 这是我做了什么,不知道它有什么问题. import { Component } from '@angular/core';import { ViewController,Platform } from 'ionic-angular';import
我从这个链接 http://plnkr.co/edit/yV94ZjypwBgHAlb0RLK2?p=preview实现了代码,但得到了推送和控制错误.

这是我做了什么,不知道它有什么问题.

import { Component } from '@angular/core';
import { ViewController,Platform } from 'ionic-angular';
import { FormBuilder,FormGroup,Validators,FormControl,FormArray } from '@angular/forms';

@Component({
  selector: 'filter-vendor',templateUrl: 'filter-vendor.html'
})

export class FilterVendorPage {




  questions = [{id:1,text:'Question 1',answers:[{id:1},{id:2}]},{id:2,text:'Question 2',answers:[{id:11},{id:22}]}]
  surveyForm:FormGroup;



  constructor(
    private viewCtrl: ViewController,private formBuilder:FormBuilder
     ){


      this.surveyForm=this.formBuilder.group({
        question:formBuilder.array([])
      })

      for(var i=0;i<this.questions.length;i++){
          let question=formBuilder.group({
            question_id:[this.questions[i].id,Validators.required],answer_id:formBuilder.array([])
          });
          this.surveyForm.controls['questions'].push(question);
      }
}


   onChange(id,isChecked,index) {

    const answers = <FormArray>this.surveyForm.controls.questions.controls[index].controls.answer_ids

    if(isChecked) {
          answers.push(new FormControl(id))
        } else {
          let idx = answers.controls.findIndex(x => x.value == id)
          answers.removeAt(idx)
    }
  }

}

请帮我解决这个问题.非常感谢

打字稿在类型检查时抱怨.您需要将控件转换为FormArray.所以改变

1)

this.surveyForm.controls['questions'].push(question);

(<FormArray>this.surveyForm.controls['questions']).push(question);

要么

(this.surveyForm.controls['questions'] as FormArray).push(question);

要么

(this.surveyForm.get('questions') as FormArray).push(question);

2)

const answers = <FormArray>this.surveyForm.controls.questions.controls[index].controls.answer_ids

const answers = this.surveyForm.get(['questions',index,'answer_ids']) as FormArray;

要么

const answers = this.surveyForm.get(`questions.${index}.answer_ids`) as FormArray;

Forked Plunker

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读