【问题标题】:Angular setValue is not a function in particular indexAngular setValue 不是特定索引中的函数
【发布时间】:2021-05-15 21:25:00
【问题描述】:

Angular 我正面临这个问题

ERROR TypeError: this.form.value.practiceSet[i].skillone.setValue is not a function

在此我需要更改数组中技能的值,但我面临如何修复该值的问题 我的 ts 是

skillset(i){
this.form.value.practiceSet[i].skilltwo.setValue(idval)
}

我的json格式是


    {
    "game":"football",
     practiceSet:[
        {
           "skillone":"running",
           "skilltwo":"chasing"
         },{
            "skillone":"jump",
             "skilltwo":"gym"
         },
      ]
    }

我需要更改“skillone”的特定值:“running”位于 this.form.value.practiceSet[i].skilltwo.setValue(idval).. 我得到了“idval”中的值,但我得到了错误

我的 HTML 是


    <ng-container formArrayName="practiceSet" *ngFor="let group of practiceSetArray.controls; let i = index;">
        <tr [formGroupName]="i">
            <td>{{i+1}}</td>
            <td>
               <mat-form-field>
                  <input matInput readonly formControlName="Skill set"></mat-form-field>
             </td>

我的 onit(初始化)


    this.form = this.fb.group({
    
    practiceSet: this.fb.array([
            this.practiceSetArray()
          ])
        })
    
    
    
    practiceSetArray(){
        let group = new FormGroup({
          skillone: new FormControl(''),
          skilltwo: new FormControl('')
    
    })
    }

【问题讨论】:

  • 请提供 HTML 和 ts 文件进行检查。我会很容易检查哪里出错了。最美好的祝愿:-)
  • 好的,谢谢,现在我在@Linker上面编辑了我的问题
  • 你想设置组件初始化的值。如果你想设置组件初始化时的值,你需要动态创建formGroup并插入到formArray中
  • 是的,我初始化了表单组和表单数组@Msk Satheesh
  • 获取控件然后设置。使用如下 this.form.value.practiceSet[i].controls.skilltwo.setValue(idval)

标签: javascript angular typescript angular8


【解决方案1】:

你正试图在一个对象上调用setValue()

我相信您使用的是反应式表单方法。考虑this.form.value 行,在调用.value 之后,你有一个对象。要获得FormGroup,请执行以下操作

  this.form.get('practiceSet').controls[i].get('skilltwo').setValue(idval)

【讨论】:

    【解决方案2】:

    尝试使用:

    获取您的 formarray 并分配:

    (<FormArray>this.form.get("practiceSet")).controls[i]
            .get("skilltwo")
            .setValue(idval);
    

    这里是 stackblitz 示例:

    https://stackblitz.com/edit/form-array-angular-2wmurr?file=src/app/app.component.ts

    【讨论】:

      猜你喜欢
      • 2016-12-25
      • 2021-07-29
      • 2021-10-04
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2012-10-25
      相关资源
      最近更新 更多