只需寻找从子路径发送数据到其父路径的最佳实践。例如,如果我有一个列表视图,并且想要添加一个足够复杂以值得其拥有自己页面的项目,那么如何使添加的项目回到列表视图?现在很明显,我可以重新获取整个列表,但这似乎很愚蠢,效率不高。我发现当路由器导航AddPage时,我还可以在ActivatedRoute参数中传递“回调函数”,但这也感觉不对(尽管我比第一个选项更喜欢它)。如果可以通过nav.back()方法将数据传递回去,那就太好了,但是建议做我需要做的事情是什么?
答案 0 :(得分:0)
pass in a callback when transitioning(it is not working in ionic4)
// callback...
myCallbackFunction = function(_params) {
return new Promise((resolve, reject) => {
resolve();
});
}
// push page...
this.navController.navigateForward(["add-product",{"callback": myCallbackFunction}]);
in the AddProductPage
this.activatedRoute.params.subscribe((data: any) => {
this.callback = data.callback;
console.log("callback "+this.callback)
});
error:-i m getting data in string form(here i m getting callback data in string format)
output:-
callback "function(_params) {
return new Promise((resolve, reject) => {
resolve();
});
"
this.callback(param).then(()=>{
this.navController.pop();
});
答案 1 :(得分:0)
我按照 Pradeep 所说的去做,并且它的工作原理是: 将 navCtrl 放在您的构造函数参数中:
private navCtrl: NavController,
当你想返回时,在你的代码中的某个地方:
let navigationExtras: NavigationExtras = {
state: {
param: "1",
}
};
this.navCtrl.navigateBack(['previouspage'], navigationExtras)
在您之前的页面构造函数中:
constructor(
........
private router: Router,
){
if (this.router.getCurrentNavigation().extras.state && this.router.getCurrentNavigation().extras.state.param) {
let param = this.router.getCurrentNavigation().extras.state.param
}
}