簡體   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