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]);
}