ionic 3 typescript:按值在页面之间传递对象
ionic 3 typescript : passing object between pages by value
我正在开发一个 Ionic 3 应用程序,我有一个列出项目的页面,如果我们点击一个项目,它会转到页面项目更新
页面项目更新包含一个更新按钮,但是当我更新了一些输入并且我 return 没有点击更新按钮就返回时,我发现该项目已经更新
所以我认为问题是我通过引用传递项目:
代码:
项目页面模板(此处为项目=配方):recipes.html
<button ion-item *ngFor="let recipe of recipes" [navPush]="recipePage" [navParams]="recipe">
<h2>{{recipe.title}}</h2>
<p>{{recipe.difficulty}}</p>
</button>
项目详细信息页面组件:recipe.ts
ionViewDidLoad(){
this.recipe = this.navParams.data ;
}
请问我如何传递有价值而不是参考的食谱?
正如克里斯所说,您应该创建对象的深层副本。像这样:
ionViewDidLoad() {
this.originalRecipe = this.navParams.data ;
this.recipe = Object.assign({}, this.originalRecipe);
};
update(){
this.originalRecipe = this.recipe;
};
我正在开发一个 Ionic 3 应用程序,我有一个列出项目的页面,如果我们点击一个项目,它会转到页面项目更新
页面项目更新包含一个更新按钮,但是当我更新了一些输入并且我 return 没有点击更新按钮就返回时,我发现该项目已经更新
所以我认为问题是我通过引用传递项目:
代码:
项目页面模板(此处为项目=配方):recipes.html
<button ion-item *ngFor="let recipe of recipes" [navPush]="recipePage" [navParams]="recipe">
<h2>{{recipe.title}}</h2>
<p>{{recipe.difficulty}}</p>
</button>
项目详细信息页面组件:recipe.ts
ionViewDidLoad(){
this.recipe = this.navParams.data ;
}
请问我如何传递有价值而不是参考的食谱?
正如克里斯所说,您应该创建对象的深层副本。像这样:
ionViewDidLoad() {
this.originalRecipe = this.navParams.data ;
this.recipe = Object.assign({}, this.originalRecipe);
};
update(){
this.originalRecipe = this.recipe;
};