在我的应用程序中,我有两个模块:应用程序和客户。 我试图在初始负载时实现从应用程序到客户的非常简单的重定向。
这些是 app-routing.module.ts 的路由:
export const routes: Routes = [
{ path: '', redirectTo: '/customer', pathMatch: 'full' }
];
这些是 customer-routing.module.ts
的路由const routes: Routes = [
{ path: 'customer', redirectTo: '/customer/restaurant-selector', pathMatch: 'full' },
{ path: 'customer/restaurant-selector', component: RestaurantSelectorComponent },
{ path: 'customer/restaurant-menu/:id', component: RestaurantMenuComponent }
];
这里的想法是,最初我想重定向到客户模块,而我不希望应用程序模块担心他们应该重定向到客户模块中的哪个页面。我希望应用程序模块将其委托给客户模块-它应该确定默认情况下要加载的组件。现在是 restaurant-selector 。
问题似乎出在 customer-routing.module.ts 中的重定向。我正在
未捕获(已承诺):错误:无法匹配任何路由。网址段: “客户”
当我更改 app-routing.module.ts 时,它会重定向到: / customer / restaurant-selector (而不是 / customer )一切似乎都还不错,但这并不是我想要的。
在这一点上,我认为问题一定是客户模块中的重定向,但是在浏览器中直接导航到 / customer 不会给我任何问题。同样,使用重定向到 / customer (<a routerLink="/customer">)
的链接也可以。
因此,问题是:为什么我无法从应用程序模块重定向到 / customer ,但是从浏览器导航并可以正常工作?是虫子吗?它是故意的行为,其背后有原因吗?
对于想进行实验的人,Angular文档团队在stackblitz.com上创建了非常相似的设置。他们还有一个应用模块,可在初始加载时重定向到英雄模块
他们的 app-routing.module.ts
{ path: '', redirectTo: '/superheroes', pathMatch: 'full' }
和他们的英雄们routing.module.ts
{ path: 'heroes', redirectTo: '/superheroes' },
{ path: 'hero/:id', redirectTo: '/superhero/:id' },
{ path: 'superheroes', component: HeroListComponent },
{ path: 'superhero/:id', component: HeroDetailComponent }
尝试将其 app-routing.modue.ts 重定向从'/ superheroes'更改为'/ heroes',您将遇到我遇到的确切问题(不要忘记重新加载它们网站预览窗格)。