Angular 角度防护,仅允许以前访问的路线
我正在制作一个步骤向导,并试图阻止用户导航到即将到来的页面路径,除非他们通过步骤导航,但允许他们导航到以前的页面/步骤 我当前的解决方案是为每个页面/步骤指定步骤编号,但不允许导航到以前的步骤:Angular 角度防护,仅允许以前访问的路线,angular,angular-routing,Angular,Angular Routing,我正在制作一个步骤向导,并试图阻止用户导航到即将到来的页面路径,除非他们通过步骤导航,但允许他们导航到以前的页面/步骤 我当前的解决方案是为每个页面/步骤指定步骤编号,但不允许导航到以前的步骤: canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> | boolean { this.insuranceStepService.getCurre
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> | boolean {
this.insuranceStepService.getCurrentStepNum().pipe(delay(100)).subscribe(stepNum => {
switch(stepNum) {
case 1:
this.router.navigate([AppRoutes.StepA]);
return true;
break;
case 2:
this.router.navigate([AppRoutes.StepB]);
return true;
break;
default:
this.router.navigate([""]);
return false;
break;
}
});
return true;
}
canActivate(下一步:ActivatedRouteSnapshot,状态:RouterStateSnashot):Promise | boolean{
this.insuranceStepService.getCurrentStepNum().pipe(延迟(100)).subscribe(stepNum=>{
开关(stepNum){
案例1:
这个.router.navigate([AppRoutes.StepA]);
返回true;
打破
案例2:
这个.router.navigate([AppRoutes.StepB]);
返回true;
打破
违约:
这个.router.navigate([“”]);
返回false;
打破
}
});
返回true;
}
您是否可以将状态保留在对象中。当访问/允许访问时,通过向状态添加密钥来标记该步骤
设置:
const stepState = {};
在上导航到新步骤(或步骤验证时)
在导航处理程序中:
if(stepState[requestedStep]) {
this.router.navigate([requestedStep]);
}
你的问题是什么?您的代码不起作用吗?很抱歉没有澄清,我的代码阻止导航到下一步,但不允许导航到上一步。
if(stepState[requestedStep]) {
this.router.navigate([requestedStep]);
}