Select Angular 9-ngModel选择和对象数组(在ngFor循环内)

Select Angular 9-ngModel选择和对象数组(在ngFor循环内),select,ngfor,ngmodel,Select,Ngfor,Ngmodel,我有一个对象数组 private data=[{title:'a',num:10},{title:'b',num:20},{title:'c',num:30}]; 我想为每个对象创建一个选择框来修改它的num字段 <form class="form-horizontal" (ngSubmit)='onSubmit()'> {{ data | json }} <div *ngFor="let item of data;let i=index

我有一个对象数组

private data=[{title:'a',num:10},{title:'b',num:20},{title:'c',num:30}];
我想为每个对象创建一个选择框来修改它的num字段

<form class="form-horizontal" (ngSubmit)='onSubmit()'>
  {{ data | json }}
  <div *ngFor="let item of data;let i=index">
    <div>{{ data[i]['title'] }}</div>
    <select [(ngModel)]="data[i]['num']">
        <option [ngValue]="10">10</option>
        <option [ngValue]="20">20</option>
        <option [ngValue]="30">30</option>
    </select>
  </div>
  ...

{{data}json}
{{data[i]['title']}
10
20
30
...
如果代码在表单中,则数据永远不会更新,所有选择框开始为空

谢谢


如果要访问模板中的私有属性,它必须是公共的

组成部分

public data=[{title:'a',num:10},{title:'b',num:20},{title:'c',num:30}];
模板

{{ data | json }}
<div *ngFor="let item of data;">
    <div>{{ item.title }}</div>
    <select [(ngModel)]="item.num">
        <option [ngValue]="10">10</option>
        <option [ngValue]="20">20</option>
        <option [ngValue]="30">30</option>
    </select>
</div>
{{data | json}
{{item.title}
10
20
30
工作示例:

显然,形式和角度仍然不协调

我改成了,它就像一个符咒

<form class="form-horizontal" (ngSubmit)='onSubmit()'>
  {{ data | json }}
  <div *ngFor="let item of data;let i=index">
    <div>{{ data[i]['title'] }}</div>
    <select [(ngModel)]="data[i]['num']">
        <option [ngValue]="10">10</option>
        <option [ngValue]="20">20</option>
        <option [ngValue]="30">30</option>
    </select>
  </div>

{{data}json}
{{data[i]['title']}
10
20
30

让我知道我的答案是否适用于you@phil123456嗯,这很奇怪,因为在我的Stackblitz示例中,它显然起作用了。。。您选择一个值,上面打印的JSON将被更新。。。你在用什么浏览器?它在stackblitz上对我有效,但在我的应用程序中不起作用,真奇怪,我已经在问题中粘贴了我的package.json…我想我必须用angular 10重新创建一个项目:-(…更新到10是安静的nightmarish@phil123456请尝试一步一步地隔离您的代码,直到找到原因为止。您是否明确指定该属性是公共的?并且该属性的源不是只读的或类似的?或者由另一个服务或类似的服务重新实例化?我更新了问题,它停止了一旦我将模板代码放入一个我更改过的表单->div中,我就不需要表单了