У меня есть маршруты, определенные следующим образом
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class CartRoutingModule implements Resolve<ServiceCart> {
constructor(private service: CartService) {}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
const id = route.params['id'] ? route.params['id'] : null;
if (id) {
return this.service.find(id).pipe(map((Cart: HttpResponse<ServiceCart>) => Cart.body));
}
return of(new ServiceCart());
}
}
const routes: Routes = [
{
path: '', component: CartComponent,
children: [
{path: '', redirectTo: 'list', pathMatch: 'full'},
{path: 'list', component: ListComponent},
{path: 'new', component: CartEditComponent, resolve: {Cart: CartRoutingModule}}
]
}];
Проблема здесь в том, что я никогда не смогу получить этот проход компилятором, так как routes
должен быть определен до CartRoutingModule
для использования в @NgModule
, а CartRoutingModule
должен быть определен до routes
, поскольку это resolve
на одном из маршрутов
Итак, компилятор выдает либо
TS2448: Block-scoped variable 'routes' used before its declaration.
или
TS2449: Class 'CartRoutingModule' used before its declaration.
тогда это как тупик
на данный момент, как использовать другую аннотацию или другой способ ввода маршрута в контексте, чтобы сделать компилятор счастливым?