我有一些延迟加载的路由如下:
const routes: Routes = [
{
path: ':lang',
loadChildren: './components/home/home.module#HomeModule',
// redirectTo: "en"
},
{
path: ':id/customers',
loadChildren: './components/customers/customers.module#CustomersModule'
},
{
path: 'products',
loadChildren: './components/products/products.module#ProductsModule'
}
];
当我用这个网址打开页面:http://localhost:4200/en
它工作正常。但是用户不知道将en
参数添加到url中,因此页面不会在没有参数的情况下加载。所以,我必须将它重定向到/en
。但是当我使用redirectTo: "en"
时,我收到以下错误:
Error: Invalid configuration of route ':lang': redirectTo and loadChildren cannot be used together
我发现了一些关于这个错误,但与我的情况无关。任何的想法?
在路线:lang
上设置redirectTo意味着:如果用户在该路线上,则应将其重定向到/en
。那不是你想要的。当路径是根路径时,您希望将用户重定向到/en
。所以你需要添加一个空的路径路由并从那里重定向:
{
path: '',
redirectTo: '/en',
pathMatch: 'full'
}
首先,您的路线中存在冲突:lang和:id。
你能试一下吗:
theObjectOfYourIds/:id/customers
和
languages/:lang
对于你的问题,
您不能使用loaChildren进行redirectTo。
如果你想去'en',你可以在组件内部进行策略(例如app.component.ts
)。