Pracuję nad Kreatora kroków, a próbując uniemożliwić użytkownikowi nawigację do nadchodzących stron, chyba że poruszają się po krokach, ale pozwól im przejść do poprzednich stron / kroków.

Moim obecnym rozwiązaniem jest określenie numeru kroku dla każdej strony / kroku, ale nie pozwala na nawigację do poprzednich kroków:

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;
}
3
Muizz Mahdy 18 marzec 2020, 14:27

1 odpowiedź

Najlepsza odpowiedź

Czy mógłbyś zachować stan w obiekcie. Po odwiedzeniu / pozostawionym do odwiedzenia znaku tego kroku przez dodanie klucza do stanu.

Ustawiać:

const stepState = {};

Włączaj się do nowego kroku (lub po zatwierdzeniu)

stepState.nextStep = true;

W przewodniku nawigacji:

if(stepState[requestedStep]) {
    this.router.navigate([requestedStep]);
}
0
Joseph Connolly 18 marzec 2020, 12:26