返回页面时,Angular 2重定向URL

Lee*_*o11 1 routing angular

我有一个Angular 2页面,它有这种类型的路由模型:

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'}
 ];
Run Code Online (Sandbox Code Playgroud)

当我在我的ImportantDocumentsComponent中打开一个pdf文件,之后尝试通过按浏览器中的后退按钮返回上一页时出现问题.该页面通知我在此服务器中找不到请求的URL.我认为这是因为实际上角度页面只有一个URL,浏览器正在尝试加载页面url + path.我以为我可以解决这个问题:

 { path: '**', redirectTo: 'announcement'}
Run Code Online (Sandbox Code Playgroud)

但它似乎没有做到这一点.

我想知道如何防止这种类型的url错误发生,以便浏览器在返回时重定向到正确的url.

先谢谢了.

drZ*_*iqq 5

位置服务和"后退"功能应该完成工作.应在旧版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();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果在webbrowser上单击后退按钮使用PlatformLocation,则可以定义onPopState.

this.location.onPopState(()=>{
  this.location.back();
});
Run Code Online (Sandbox Code Playgroud)