【问题标题】:Dynamic ngModel inside ngFor not workingngFor 中的动态 ngModel 不起作用
【发布时间】:2018-08-05 08:18:10
【问题描述】:

我查看了如下页面

    <div class="row" *ngFor="let c of conditionArray;>
        <div class="col-sm-12 col-xl-2 m-b-10">
            <ng-select [(ngModel)]="c.condition" placeholder="Select Condition" [ngClass]="'ng-select'" [options]="conditions" [multiple]="false">      </ng-select>
        </div>
   </div>

我的组件如下所示

this.frm={};
conditionArray:Array<any> =
[
    {
      condition:'frm.condition1',
      pos:1
    }
]
saveCond(){
    alert(JSON.stringify(this.frm));
}

当我调用 saveCond() 方法时,它总是显示空对象。但是,如果我将我的 HTML 模型重写为具有 [(ngModel)]="frm.condition1" ,那么它工作正常。我在这里做错了什么??

【问题讨论】:

  • 除了this.frm={} 之外,你没有设置this.frm,所以它总是一个空对象
  • 如果我能够正确理解您,您不能将动态值绑定到 ngModel。您可能可以使用(change) 事件来传递对象c,然后动态访问/为所需字段分配值。
  • 是的,我想是的。做了一个小改动,现在可以工作了。我会把它作为答案发布
  • 我认为你应该考虑反应式 formArray 更好的方法 imo angular.io/api/forms/FormArray - 一个简单的例子 alligator.io/angular/reactive-forms-formarray-dynamic-fields
  • 您不能将动态值绑定到 ngModel

标签: angular angular6 ngfor ngmodel


【解决方案1】:

我做了一个小改动,现在它工作正常!我没有传递整个模型(frm.condition1),而是将其更改为仅传递内部模型名称。 如下所示,

    conditionArray:Array<any> =[
    {
      condition:'condition1',
      pos:1
    }
  ]

从我的 HTML 中,我将模型推送到“frm”对象中,

[(ngModel)]="frm[c.condition]"

现在我可以访问“frm”对象了

【讨论】:

    猜你喜欢
    • 2019-01-06
    • 2018-11-23
    • 2020-08-09
    • 2016-10-11
    • 2018-02-23
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 2021-09-12
    相关资源
    最近更新 更多