繁体   English   中英

使用Angular 2 RC5路由器,给定ActivatedRouteSnapshot,如何导航?

[英]Using Angular 2 RC5 router, how can I navigate, given an ActivatedRouteSnapshot?

用例

用户无需登录即可访问我网站的某些部分。如果单击下载按钮并登录,则下载将自动开始。 但是,如果他们单击下载按钮但未登录,我想提示他们登录。 他们登录后,希望将他们直接发送回以前的路线。

我如何努力做到这一点

当“匿名”用户单击下载按钮时,将为他们提供一个模态,并提示您登录。 如果他们决定登录,我会将一些对象存储在本地存储中(正在考虑使用ActivatedRouterSnapshot可以做什么?)。 登录后,我将检查本地存储中是否在stashedRoute下存储了一个对象。 如果有的话,我将使用它来将其导航回其原始路线!

我想做的事

鉴于:

import { Router } from '@angular/router';

private someRoute: ActivatedRouterSnapshot;

constructor(private _router: Router) {}

我想要:

this._router.navigate(someRoute)

问题

进行上述操作或获得与存储路线并重新导航至该路线相同的功能的语法是什么?

我认为您需要像历史这样的东西来返回路线,您可以使用下面描述的代码

import {Component} from '@angular/core';
import {Location} from '@angular/common';


@Component(...)

class AppCmp {
  constructor(private _location: Location) {
  }
  backClicked() {
    this._location.back();
  }
}

我有一个类似的问题,并通过以下方法解决了。 flatten来自lodash,而route是您的ActivatedRoute。 这不是很好,但目前可以使用。 您可能想使用flattenDeep来容纳深度嵌套的路由。

const route = flatten(route.pathFromRoot.map(r => r.url)).map(s => s.path);
this.router.navigate(route);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM