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中,我就不需要表单了