html - 更新离子模式中的列表会更新原始列表 ionic 5
问题描述
我有一个澄清,基本上我将一个列表从父页面传递到离子模式。在模态中,我将遍历一个列表。我基本上是在点击 ion-item 时修改对象的属性。
下面是模态中的html代码。
<ion-card *ngFor="let item of items">
<ion-row>
<ion-col size="3">
<ion-img width="80" height="80" [src]="item.imagePath"></ion-img>
</ion-col>
<ion-col size="7" >
<ion-label class="item-name">item.name</ion-label>
<ion-label class="item-price">item.cost</ion-label>
<ion-label class="item-date">item.date</ion-label>
</ion-col>
<ion-col size="2">
<ion-icon class="select-icon" name="add-circle" (click)="updateObj(item)"></ion-icon>
</ion-col>
</ion-row>
</ion-card>
在 modal.component.ts
ngOnInit() {
this.items = this.navParams.get("items");
}
dismissModal(){
this.modalCtrl.dismiss();
}
updateObj(object){
if(object){
object.status = true
}
}
我正在使用 navParams 将列表从父页面获取到模态。当我单击 ion-item 时,我将调用 updateObj 方法,在该方法中我将对象的状态更新为 true。一切正常。但是当我更新模态中的对象时,发送到模态的原始列表也会更新。
谁能解释为什么更新模式中的列表会更新原始列表。是否使用 navParams 作为列表的引用?
在 Parent.component.ts
async openSearchModal(){
const modal = await this.modalCtrl.create({
component: CouponSearchPage,
componentProps: { items: this.itemListData,
}
});
这就是我将列表从父屏幕传递给模式的方式。
解决方案
当您将 this.itemListData 传递给 modal 时,您正在传递对象的引用。如果您不想修改实际对象,可以传递一个新对象。尝试这个:
const modal = await this.modalCtrl.create({
component: CouponSearchPage,
componentProps: { items: { ...this.itemListData},
}
});
推荐阅读
- java - 关闭 JGraphX 生成的图形后如何防止 JavaFX GUI 自动关闭?
- c# - 从视频游戏截图中提取信息
- .net - 确定给定 lat、long、date 的历史 UTC 偏移量
- php - 在 MongoDB 中存储大于 16 MB 的字符串(MongoDB 文档大小限制为 16 MB)
- regex - Bash:在每行之后插入一行
- macos - 如何在终端中为 FFMPEG 元数据格式化空格
- laravel - 如何使用 vue js 和 laravel 修复 405(不允许的方法)
- sql - Increment value of a column field whenever SELECT row
- unit-testing - 在 Raku 中进行单元测试时如何模拟类方法
- kotlin - Kotlin 委托与 `by` 但在 *inside* 委托人中创建委托