2017-09-02 39 views
0

我有一個角2頁有這種類型的路由模式:當我在ImportantDocumentsComponent打開PDF文件,之後試圖讓角2重定向URL回到頁面時

const routes: Routes = [ 
    { path: '', pathMatch: 'prefix', redirectTo: 'announcement' }, 
    { path: 'announcement', component: AnnouncementComponent }, 
    { path: 'important-documents', component: ImportantDocumentsComponent }, 
    { path: 'reservations-and-orders', component: ReservationsAndOrdersComponent}, 
    { path: 'contact', component: ContactComponent }, 
    { path: '**', redirectTo: 'announcement'} 
]; 

通過按下瀏覽器中的後退按鈕回到上一頁,會出現問題。該頁面通知我在該服務器中找不到請求的URL。我假設發生這種情況是因爲實際上角網頁只有一個網址,並且瀏覽器正在嘗試加載網頁網址+路徑。我想我可以繞過它:

{ path: '**', redirectTo: 'announcement'} 

但它似乎沒有辦法。

我想知道如何防止發生這種類型的URL錯誤,以便瀏覽器在返回時重定向到正確的URL。

已經事先致謝。

+0

如果只是重新定位需要無效的路徑,嘗試這樣的 - '{路徑:「**」,成分:AnnouncementComponent}如您在片段 –

+0

沒有工作表現'只要把作爲最後一個路徑。它只是打破了路由模塊並將所有路徑重新路由到AnnouncementComponent。 – Leero11

回答

2

位置服務和「返回」功能應該做的工作。位置服務應該從老版本的Angular 2的「angular2/router」中導入。對於較新的「@ angular/common」。以下是您的表單中有後退按鈕的情況。

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


@Component({ directives: [ROUTER_DIRECTIVES] }) 
@RouteConfig([ 
    {...}, 
]) 
class AppComponent { 
    constructor(private _location: Location) { 
    } 
    backClicked() { 
     this._location.back(); 
    } 
} 

如果爲返回鍵點擊網頁瀏覽器使用PlatformLocation然後你可以定義onPopState

this.location.onPopState(()=>{ 
    this.location.back(); 
}); 
+1

謝謝!這似乎有伎倆。 – Leero11