离子路线导航器

时间:2019-08-30 01:23:48

标签: javascript angular ionic-framework

对于我的应用程序的某些页面,我有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-如果用户在简介页转到个人资料页中使用了后退按钮。

有什么想法吗?

2 个答案:

答案 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,请遵循此方法

常规页面重定向

  1. 您的页面是父页面。您将重定向到子页面

    this.router.navigate(['\ child'])

  2. 如果您通过重定向传递数据,请使用此方法 parent.ts

    让navigationExtras:NavigationExtras = {   状态:{     用户:this.user   } }; this.router.navigate(['child'],navigationExtras); }

child.ts

  1. 数据:任意;

    构造函数(私有路由:ActivatedRoute,私有路由器:Router){ this.route.queryParams.subscribe(params => {   如果(this.router.getCurrentNavigation()。extras.state){     this.data = this.router.getCurrentNavigation()。extras.state.user;   } }); }