Я новичок в угловой. Я начинаю с последней версии, 8.
Я пытаюсь написать приложение. Начальным состоянием маршрута является путь: '', и я хотел бы определить следующий маршрут на основе некоторого условия в базовом пути здесь. Если условие истинно, мне нужно перенаправить пользователя в / home, а в случае сбоя мне нужно перенаправить в / welcome. И дома, и добро пожаловать лениво загружены.
У меня есть служба охраны, где принимается решение о маршрутизации (какой путь выбрать).
приложение-routing.ts
import { Routes, RouterModule } from '@angular/router';
import { HomeGuardService } from './services/route-guard/home-guard.service';
const routes: Routes =
[
{
path: '', pathMatch: 'full',
canActivate: [HomeGuardService],
children:
[
{ path: 'welcome', loadChildren: () => import('./welcome/welcome.module').then(mod => mod.WelcomeModule), },
{ path: 'home', loadChildren: () => import('./home/home.module').then(mod => mod.HomeModule) }
]
}
];
@NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] })
export class AppRoutingModule { }
дом-guard.service.ts
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router/src/router_state';
import { LocalStorageService } from '../storage/local-storage.service';
@Injectable({ providedIn: 'root' })
export class HomeGuardService implements CanActivate {
constructor( private router: Router) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { return this.checkCountrySelection(state); }
private checkCountrySelection(state: RouterStateSnapshot): boolean {
if (<my_condition>) {
this.router.navigate(['home']);
return true;
}
this.router.navigateByUrl('welcome');
return false;
}
}
Теперь, с этой настройкой, angular жалуется, что не может соответствовать ни одному маршруту для сегмента URL: 'welcome'
(Изначально я поставил условие сбоя в службе домашней охраны, чтобы он загрузил модуль приветствия)