所有数组值均相同时发生拼接问题

冰蚁

我创建了一个空数组,用于循环遍历以动态添加和删除表单上的文本框。

mobiles: Array<string> = [];

<ng-container *ngFor="let mobile of mobiles; index as i">
// Code
</ng-container>

在循环之外,我有一个添加新文本框的按钮。

<button (click)="addElement()">
</button>

我在循环中有一个按钮,可以根据索引删除特定的文本框。

<button (click)="removeElement(i)">
</button>

addElement()函数只是将一个空值推到数组的末尾。

this.mobiles.push('');

而该removeElement(index)函数从数组中删除索引。

if (index in this.mobiles) {
    this.mobiles.splice(index, 1);
}

此代码的问题在于,由于数组上的所有值都相同(为空),splice()因此不会删除指定索引处的元素,而是删除数组中的最后一个元素。因此,它还会删除最后一个文本框,而不是我单击的那个文本框。

我测试了在数组中推送非空值,但结果仍然相同。仅当我推送不同的值时,它才能正常工作,例如:

this.mobiles.push(this.mobiles.length);

但是,我不想使用此方法,因为我计划用实际的电话号码填充此数组。

还有其他选择吗?

我的Angular版本是7.2.15。

谢谢!

演示:https : //stackblitz.com/edit/angular-phgo61

康纳斯·范

解决该问题的一种方法是将每个值包装在一个对象中。ngFor循环中每个项目的值将成为对象的引用。由于这些引用均不同,因此将按预期删除目标项目。

使用此界面:

interface Phone {
  phoneNumber?: string;
}

您可以定义一个Phone对象数组

mobiles: Array<Phone> = [];

addElement() {
  this.mobiles.push({});
}

removeElement(index) {
  this.mobiles.splice(index, 1);
}

get phoneNumbers() {
  return this.mobiles.map(x => x.phoneNumber);
}

phoneNumber在模板中编辑属性:

<button (click)="addElement()">Add phone</button>
<ng-container *ngFor="let mobile of mobiles; index as i;">
  <div>
    <input [(ngModel)]="mobile.phoneNumber" />
    <button (click)="removeElement(i)">Remove element</button>
  </div>
</ng-container>

有关演示,请参见此堆叠闪电战

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何找到具有相同值的所有数组?

来自分类Dev

鼠标悬停在所有元素上同时发生的效果

来自分类Dev

DataFrame 中相同的字典同时发生变化

来自分类Dev

引导卡,所有尺寸均相同

来自分类Dev

所有列的结果均相同

来自分类Dev

Arraylist在所有数组位置的所有行都获得相同的值

来自分类Dev

SQL Server-插入表中-除1以外的所有列值均相同

来自分类Dev

ID相同时获取所有数据的查询

来自分类Dev

如果检查所有数组值

来自分类Dev

如何调用所有数组值

来自分类Dev

验证 json 以确保所有数组属性值都是相同的对象类型

来自分类Dev

OpenGL阴影贴图在所有对象上均相同

来自分类Dev

PHP:如何使所有数组具有相同的键

来自分类Dev

在Java中同时发生多个异常

来自分类Dev

如何获取同时发生的事件的列表

来自分类Dev

PlaybackNearlyFinished 和 PlaybackFinished 几乎同时发生?

来自分类Dev

拼接数组以添加到现有数组

来自分类Dev

PointF 数组的所有值都相同

来自分类Dev

当所有其他列的值都相同时,将列的多行的值折叠到数组中

来自分类Dev

MySQL:加入以连续获取具有相同时间戳的所有数据

来自分类Dev

与熊猫在相同时间的所有值之间的RMSE

来自分类Dev

查找给定值的所有数组子序列

来自分类Dev

如何将所有数组值放入$ _GET []

来自分类Dev

选择Postgres中所有数组中存在的值

来自分类Dev

用串行键合并所有数组值

来自分类Dev

一次使用所有数组值吗?

来自分类Dev

将键中的值与所有数组项合并

来自分类Dev

如何以角度从 JSON 访问所有数组值

来自分类Dev

从所有数组值创建椭圆图