Angular 重定向到延迟加载模块中的参数

Angular redirect to parameter in lazy loaded module

我有一些延迟加载的路由如下:

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'
    }
];

当我打开带有此 url 的页面时:http://localhost:4200/en 它工作正常。但是用户不知道将 en 参数添加到 url,因此页面不会在没有参数的情况下加载。所以,我必须将它重定向到 /en。但是当我使用 redirectTo: "en" 时,出现以下错误:

Error: Invalid configuration of route ':lang': redirectTo and loadChildren cannot be used together

我发现了一些关于此错误的信息,但与我的情况无关。有什么想法吗?

首先,您的路由在:lang 和:id 之间存在冲突。

你能试试吗:

theObjectOfYourIds/:id/customers

languages/:lang

对于你的问题,

您不能使用 loaChildren 的 redirectTo。

如果您想转到 'en',请在您的组件中执行策略(例如 app.component.ts)。

在路由 :lang 上设置 redirectTo 意味着:如果用户在该路由上,则应将其重定向到 /en。那不是你想要的。当路径是根路径时,您想将用户重定向到 /en。所以你需要添加一个空路径路由并从那里重定向:

{
    path: '',
    redirectTo: '/en',
    pathMatch: 'full'
}