对于我的应用程序的某些页面,我有navigateRoot
可以根据条件重定向用户,但是问题是当用户重定向到目标页面时,他们将失去使用后退按钮的能力。
如果我在视图中使用路线链接/按钮,则可以使用routerDirection="forward"
来为用户激活后退按钮,但是在这种情况下,我不确定如何使用路线方向
const addToko = this.addToko.value;
this.storeService.store(
addToko.name,
).subscribe(
data => {
this.alertService.presentToast(data['message']);
this.navCtrl.navigateRoot('/toko'); <-- redirect user here
},
error => {
this.alertService.presentToast(error['message']);
}
);
现在,因为此重定向是基于条件的,所以我更希望为后退按钮设置静态路由,示例逻辑如下:
1-如果没有用户存储,则重定向到简介页面
2- (此处介绍没有后退按钮-基于上面的示例代码)
3-如果用户在简介页转到个人资料页中使用了后退按钮。
有什么想法吗?
答案 0 :(得分:0)
好吧...
“进入根目录”意味着将删除堆栈中所有现有的页面...
所以...如果您不希望那样,您可以使用“ @ angular / router”和setDirection中的常规路由器,如图所示
首先,您需要从'@ angular / router'导入{Router};
constructor (private router: Router) {}
并使用它。像这样:
const addToko = this.addToko.value;
this.storeService.store(
addToko.name,
).subscribe(
data => {
this.alertService.presentToast(data['message']);
this.navCtrl.setDirection('root');
this.router.navigate('/toko'); // this should be the same without delete all ... i hope it helped,
},
error => {
this.alertService.presentToast(error['message']);
}
);
答案 1 :(得分:0)
如果您使用的是离子版本4,请遵循此方法
您的页面是父页面。您将重定向到子页面
this.router.navigate(['\ child'])
如果您通过重定向传递数据,请使用此方法 parent.ts
让navigationExtras:NavigationExtras = { 状态:{ 用户:this.user } }; this.router.navigate(['child'],navigationExtras); }
child.ts
数据:任意;
构造函数(私有路由:ActivatedRoute,私有路由器:Router){ this.route.queryParams.subscribe(params => { 如果(this.router.getCurrentNavigation()。extras.state){ this.data = this.router.getCurrentNavigation()。extras.state.user; } }); }