【问题标题】:How to use PatchValue inside a loop on a FormArray?如何在 FormArray 的循环中使用 PatchValue?
【发布时间】:2021-05-13 09:31:52
【问题描述】:

大家好,我有一个函数,当我使用console.log(id) 时我传递了id,它工作正常,但是为什么我不能在formArray 的循环中使用patchValue?我希望所有前 5 个元素都具有相同的 id。

for(let j=0; j<5; j++)
{
  this.myarray.at(j).patchValue([
    {
       elementid: id
       
     }
   ]);
  
}

【问题讨论】:

  • 您遇到了哪个错误?
  • 我没有收到任何错误...但是 elementId 没有收到 id...
  • 如果我使用相同的 patchValue 而不是在循环内并且只对第一个元素有效
  • 你确定你的'at'函数吗? Stackblitz 不知道它在 Arrays 上。我查了一下,好像是“实验函数”:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

标签: angular formarray


【解决方案1】:

我不确定这是否正是您想要做的,但我做了一个小的StackBlitz,我在其中使用splice 替换了循环中的值。 正如你在控制台中看到的,数组的前5个元素在运行函数后都具有相同的id,而'name'没有变化。

可能有更好的方法可以达到相同的结果

【讨论】:

  • 经过其他一些研究后,我发现了 this.myarray.controls[j].get('elementid').setValue(id);它和您的解决方案一样完美,非常感谢您抽出宝贵的时间,我真的很感激。
【解决方案2】:
this.myarray.controls[j].get('elementid').setValue(id);

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 2021-07-04
    • 2018-12-20
    • 2020-04-26
    • 2020-04-20
    • 2019-12-19
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    相关资源
    最近更新 更多