javascript - Angularr ngModel 并从数组中删除数据
问题描述
我有一个空的 ngModel=titel,点击后,我在模板中添加了空输入字段。麻烦的是,我不能完全删除我不会删除的那个字段。我的拼接总是删除最后一个字段是我的 ts
应用程序.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
inputFields = [];
addSome() {
this.inputFields = ['', ...this.inputFields];
}
deleteSome(val: number) {
console.log(val);
const index = val;
if (index !== -1) {
this.inputFields.splice(index, 1);
}
console.log(index);
}
}
和我的html
应用程序.html
<mat-icon (click)="addSome()">add</mat-icon>
<div class="form-group" *ngFor="let item of inputFields; index as i">
<input type="text" class="form-control" name="price" [(ngModel)]="item[i]" />
<mat-icon (click)="deleteSome(i)">delete</mat-icon>
</div>
和stackbiz:stackbiz
解决方案
我更新了您的stackblitz示例,这应该可以正常工作。在这里您可以找到更详细的示例。输入驯服应该是唯一的,而且你的[ngModel]
映射也不好。
有一个解释
您正在迭代您正在编辑的项目,它们是原始值。ngFor 无法通过身份跟踪,因为当值从 1 更改为 3(通过编辑)时,它变成了不同的身份。要么使用按索引跟踪的自定义 trackBy,要么使用对象而不是原始值。
推荐阅读
- r - 如何在已分组的数据帧(grouped_df)上按组键过滤
- unity3d - 当我从另一个脚本增加该值时,如何检查一个 int 值?
- javascript - 使用 webpack 添加目录
- python - 在字典中聚类句子向量
- user-interface - 如何在 Flutter 中不使用 AppBar 的情况下添加返回按钮?
- angular - 参考 agm-map 元素创建 PlacesService 失败
- angular - 如何在显示错误时运行 ng 相关命令
- java - Java:是接受 T 还是只是它的子类型?
- spring - 在spring boot中将@Conditional添加到现有的spring注解中
- oracle - 为什么动态sql语句报错