我有一个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.
先谢谢了.
位置服务和"后退"功能应该完成工作.应在旧版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)
| 归档时间: |
|
| 查看次数: |
1015 次 |
| 最近记录: |