![](/img/trans.png)
[英]How to render elements if space is available for that element using ngFor in Angular2
[英]Angular2 how to delete element in ngFor
如何从ngFor
删除元素? 我有这个ngFor
其中有一个项目的Id
以及我传递这在updateOrder()
函数,以便它会知道我点击哪个项目。
getOrdersFromOrigin() {
this.sharedService.getOriginSite()
.subscribe(data => {
this.isLoading = false;
this.orderPreparing = data.Results
})
}
<div class="preparing" *ngFor="let prepare of orderPreparing">
<p> {{ prepare.Item }} </p>
<button class="btn btn-primary" (click)="updateOrder(prepare.Id)">It's Ready</button>
</div>
在我的updateOrder
,我的updateOrder函数中没有任何内容,因为我不确定如何删除相对于我在(click)=""
事件中传递的Id
的元素,它给了我很好的Id
。
这个updateOrder()
正在工作,因为它从UI中删除它,但想法是删除后我想将它添加到集合中。
updateOrder(id) {
for(let i = 0; i < this.orderPreparing.length; i++) {
if (this.orderPreparing[i].Id === id) {
this.orderPreparing.splice(i, 1);
this.addToCollection.push(this.orderPreparing[i]);
console.log(this.addToCollection);
console.log('Changed Status to AwaitingToPick');
break;
}
}
}
我添加了一个新的private addToCollection = []
来将删除的item
推送到一个数组,以便我可以将它添加到集合中。 但是上面的代码只接受最后一个index
当我向数组中添加另一个时,它会破坏数组变为[Object{}, undefined]
有多种方法可以做到这一点。 看看这个,如果我不迟到:
updateOrder(id) {
for(let i = 0; i < this.orderPreparing.length; i++) {
if (this.orderPreparing[i].Id === id) {
this.orderPreparing.splice(i, 1);
break;
}
}
}
希望对你有用。
我猜想正在寻找的是从orderPreparing对象中删除它(如果你当然没有删除它的后端)。 你可以尝试这个:
updateOrder(id) {
for(item in orderPreparing) {
if(item[id] == id) {
delete this.orderPreparing.item;
}
}
}
如果你有一个后端应用程序,你需要检查是否有一个脚本删除你的后端订单,在你的服务中调用一个函数,负责与你的api通信,然后包括组件中的服务,调用函数删除订单并再次更新订单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.