首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: control.setParent不是函数

TypeError: control.setParent不是函数
EN

Stack Overflow用户
提问于 2018-04-10 15:41:16
回答 1查看 4.2K关注 0票数 5

我的组件TypeError: control.setParent is not a function出现错误。使用FormBuilder,我构建了一个FormArray并在构造函数中初始化了表单组。因此,据我所知,这个错误是说表单控件尚未设置。我不确定这对我有什么意义

这是到目前为止的组件...

代码语言:javascript
复制
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, FormArray } from '@angular/forms';
import { Observable } from 'rxjs/Observable';
import { tap, map } from 'rxjs/operators';
import { MediaListService } from '../../services/media-list.service';
import { ActivatedRoute } from '@angular/router';

@Component({
    selector: 'app-media-list-builder',
    templateUrl: './media-list-builder.component.html'
})
export class MediaListBuilderComponent implements OnInit {

    mediaListForm: FormGroup;
    contactsDataSource$: Observable<any>;
    mediaListDataSource$: Observable<any>;
    mediaListId: number;
    mediaList: any;
    searchText = '';
    searchKey = 'name';
    tableView = true;

    constructor(
        private fb: FormBuilder,
        private router: ActivatedRoute,
        private medialistsrv: MediaListService
    ) {

        this.mediaListForm = this.fb.group({
            contacts: this.fb.array([])
        });

        this.router.params.subscribe(params => {
            this.mediaListId = +params['id'];
        });
    }

    get _contacts(): FormArray {
        return this.mediaListForm.get('contacts') as FormArray;
    }

    ngOnInit() {

        this.medialistsrv.getMediaListById(this.mediaListId).subscribe(
            response => {
                this.mediaList = response.contacts;
                this.mediaList = this.mediaList.map(obj => obj.contactId);
                this.mediaList.forEach(id => {
                    this._contacts.push(id);
                });
            }
        );

        this.contactsDataSource$ = this.medialistsrv.getAllContacts()
            .map(response => response);

    }

    toggleView(arg) {
        this.tableView = arg;
    }

}
EN

回答 1

Stack Overflow用户

发布于 2021-09-26 15:25:39

让我们考虑一个解决方案,它对我来说很好。

代码语言:javascript
复制
 this.customerFormGroup= this.formBuilder.group({
      firstName: ['', Validators.required],
      lastName:['', Validators.required],
      customerAddressDTOList:this.formBuilder.array([])
    });

然后

代码语言:javascript
复制
get customerAddressDTOList() {
    return <FormArray>this.customerFormGroup.controls['customerAddressDTOList'];
  }

之后执行推送操作

代码语言:javascript
复制
addCustomer(){
 this.customerAddressDTOList.push(this.formBuilder.control(anyvalue));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49748018

复制
相关文章

相似问题

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