Мое приложение не может отображать изменения на экране адреса URL.Прямо сейчас мое приложение лежит на localhost: 4200 /, и все.Поэтому я потратил время на то, чтобы мои навигационные ссылки отключили изменение местоположения:
<a [routerLink]="[screenPath]" skipLocationChange>
И у меня есть одно централизованное местоположение в службе, которое обрабатывает маршрутизацию, когда необходимо изменение экрана:
if (route) {
this.router.navigate([newRoute], {relativeTo: route, skipLocationChange: true});
} else {
this.router.navigate([newRoute], {skipLocationChange: true});
}
В моем основном модуле маршрутизации приложений я пропускаю начальную навигацию:
@NgModule({
imports: [RouterModule.forRoot(routes, {initialNavigation: false})],
....
})
И в моих дочерних маршрутах, где происходит моя навигация, у меня есть средства защиты, чтобы предотвратить определенную навигацию на основе определенныхусловия:
const routes: Routes = [
{ path: 'somepath', component: SomeFormComponent, canActivate: [WorkFlowGuard] },
{ path: 'anotherpath', component: AnotherFormComponent, canActivate: [WorkFlowGuard]},
....
];
И мой WorkFlowGuard возвращает простое логическое значение, чтобы определить, разрешен или нет путь:
canActivate(next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean
{
// GRAB CURRENT PATH AND VERIFY
const path = next.routeConfig.path;
console.log(`GUARD - verify path: '${path}'`);
const allow = this.verifyWorkFlow(path);
return allow;
}
Когда я могу получить доступ к экрану или когда я двигаюсьдо следующего экрана с помощью кнопки формы, URL-адрес до не меняется, и это здорово!Однако каждый раз, когда WorkFlowGuard активируется и возвращает false, чтобы я не смог получить доступ к определенному экрану, верхний URL-адрес изменяется.Другими словами, если я нахожусь на 'somepath' и пытаюсь получить доступ к 'anotherpath', когда не могу, верхний URL-адрес изменяется с
localhost: 4200 /
на
localhost: 4200 / somepath
Почему это происходит и что я могу сделать, чтобы предотвратить изменение URL-адреса?