首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角2+ removeAt函数不工作在子分量中

角2+ removeAt函数不工作在子分量中
EN

Stack Overflow用户
提问于 2018-01-15 13:31:03
回答 1查看 2.5K关注 0票数 2

我在angular4中为我的表单使用模型驱动。

我通过formarray将一个@input传递给子组件,当我使用removeAt时,会发现一个错误:

removeAt不是一个函数

我的父母component.html

代码语言:javascript
复制
<form class="ui form" [formGroup]="gform" (ngSubmit)="doSave(gform.value)">
<app-tag-input [_input]="spectra.controls"  ></app-tag-input>
</form>

parentcoponent.ts

代码语言:javascript
复制
     gform: FormGroup;
       get spectra(): FormArray { return this.gform.get('spectra') as 
       FormArray; }
       ngOnInit() {
        this.spectra.insert(0, this.initSpectrum(' very good'));
            this.spectra.insert(1, this.initSpectrum('good'));
            this.spectra.insert(2, this.initSpectrum('normal'));
            this.spectra.insert(3, this.initSpectrum('need to more try'));}

childcoponent.ts:

代码语言:javascript
复制
export class TagInputComponent implements OnInit {

@Input() _input :FormArray;
tagEntry:string;

  constructor(private formBuilder:FormBuilder) {
    formBuilder.array
    }
  addToInput() {
    const formGroup=this.formBuilder.control(
      this.tagEntry
    );
    const order = this._input.length + 1;
    this._input.push(formGroup)
    this.tagEntry='';

  }
  removeSpectrum=(i: number)=> {

    const control = <FormArray>this._input;

    control.removeAt(i);
  }
  ngOnInit() {

  }

}

我的孩子component.html

代码语言:javascript
复制
<div class="tagsinput">
  <span *ngFor="let item of _input let i=index" class="ui teal  label">
    {{item.value}}
    <i class="close icon" (click)="removeSpectrum(i)"></i>

  </span>
  <input type="text"  [(ngModel)]="tagEntry"  [ngModelOptions]="{standalone: true}" (keyup.enter)="addToInput()"/>
</div>

当我在两个组件中控制台格式化数组时,父组件spectra中存在一个控制对象,而子组件中的_input中不存在一个控制对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-15 13:59:49

这是因为您传递的是Array而不是FormArray

代码语言:javascript
复制
[_input]="spectra.controls"

试着换到

[_input]="spectra"

子模板应该如下所示:

代码语言:javascript
复制
*ngFor="let item of _input.controls
                         ^^^^^^^^^^
                       add this

示例

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48264025

复制
相关文章

相似问题

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