Angular路由报错:无法匹配/subscription/plan路径及重定向需求
Angular路由问题解决:无法匹配/subscription/plan及重定向实现
问题1:访问/subscription/plan报错的解决
你的订阅路由配置存在核心问题:path: ''的父路由设置了pathMatch: 'full',这会让Angular严格匹配空路径(即/subscription),不会解析该路由下的children配置,导致/subscription/plan无法匹配到对应路由。
修改后的订阅路由代码:
const routes: Routes = [ { path: '', component: SubscriptionComponent, children: [ {path: 'plan', component: PlanComponent}, {path: 'delivery-days', component: DeliveryDaysComponent}, {path: 'dishes', component: DishesComponent}, {path: 'payment', component: PaymentComponent} ] } ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) export class SubscriptionRoutingModule { }
关键修改:移除父路由的pathMatch: 'full',这样Angular会先匹配父路由(对应/subscription),再去匹配子路由plan,就能正确加载PlanComponent。
问题2:实现/subscription自动重定向到/subscription/plan
在订阅路由数组中添加一条重定向路由即可,注意要放在父路由之后(确保重定向路由只会匹配空路径):
最终完整的订阅路由配置:
const routes: Routes = [ { path: '', component: SubscriptionComponent, children: [ {path: 'plan', component: PlanComponent}, {path: 'delivery-days', component: DeliveryDaysComponent}, {path: 'dishes', component: DishesComponent}, {path: 'payment', component: PaymentComponent} ] }, {path: '', redirectTo: 'plan', pathMatch: 'full'} ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) export class SubscriptionRoutingModule { }
这条重定向路由会在访问/subscription时,自动将路径重定向到/subscription/plan,同时不影响子路由的正常访问。
确认SubscriptionComponent的模板中已包含<router-outlet></router-outlet>,用于渲染子路由组件,这一步你已经完成。
内容的提问来源于stack exchange,提问作者Konstantin Kim
相关产品推荐
相关产品推荐

