3 回答
TA贡献1803条经验 获得超3个赞
您需要使用导航选项。当您收到导航到错误页面的错误时,应该使用NavigationExtras来实现。您可以在那里定义skipLocationChange或replaceUrl。
skipLocationChange 在导航更改时跳过以将状态推送到历史记录
replaceUrl 重新定义历史中的当前状态
代码应如下所示:
this.router.navigate(['/error'], { replaceUrl: true });
文档参考:https : //angular.io/api/router/NavigationExtras
TA贡献1848条经验 获得超10个赞
Angular 路由保护 CanActivate 方法将帮助您解决我们的问题,当用户导航或尝试从一个屏幕导航到另一个屏幕时它会触发。它还将为您提供可以根据您的要求轻松操作的下一个 url 路由。您只需在提供程序中包含路由保护并实现 CanActivate 路由保护。
step 1-实现CanActivate接口
import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
@Injectable({
providedIn: 'root',
})
export class AuthGuard implements CanActivate {
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): boolean {
// here you can write you logic example-> you can navigate to some where else protect navigation
console.log('AuthGuard#canActivate called');
return true;
}
}
第 2 步 -> 告诉你的路由表你有一个守卫来保护你的路由:P
import { AuthGuard } from '../auth/auth.guard';
const adminRoutes: Routes = [
{ path: 'crises', component: ManageCrisesComponent },
{ path: 'admin', component: AdminComponent, canActivate: [AuthGuard]} // -->your Auth guard will get register here
];
TA贡献1811条经验 获得超4个赞
对我来说,后退按钮是浏览器和用户的问题。我将解释我自己,如果用户想回去,你应该让他们回去,这对我来说是正确的方式,通常的流程以及应该如何完成。
但为了实现这一点,您可以这样做:
在您的错误页面中,您可以使用 history.pushState 文档:https : //developer.mozilla.org/en-US/docs/Web/API/History/pushState
history.pushState(null, null, window.location.href);
添加回答
举报