带参数的 Angular 4 延迟加载



您好,我正在尝试延迟加载"详细信息模块",同时还通过URL发送参数。

这是我的延迟加载路线:

{
    path: 'venue/:name/:id',
    loadChildren: () => System.import('../containers/activity-detail/activity-detail.module').then((file: any) => {
        return file.default;
    })
},

我想路由到这个"活动细节模块",然后使用":name"和"id:"参数加载详细信息。

加载的模块有自己的路由文件。

export const VenueDetailRoutes: Route[] = [
    {
        path: '',
        redirectTo: 'venue/:name/:id',  
        pathMatch: 'full'
    },
    {
        path: 'venue/:name/:id', 
        component: VenueDetailComponent,
        data: {
            shouldDetach: true, // Route will be resused. See CustomResuseStrategy.
            title: null
        }
    },
    {
        path: '**',
        redirectTo: '/'
    }
];

似乎没有第一个默认对象,什么都不起作用。我收到错误:

{
    path: '',
    redirectTo: 'venue/:name/:id', 
    pathMatch: 'full'
},
TypeError: Cannot read property 'path' of null

使用默认对象后,我收到错误:

Error: Cannot redirect to 'venue/:name/:id'. Cannot find ':name'.

任何帮助将不胜感激。

我认为这行不通:

{
    path: '',
    redirectTo: 'venue/:name/:id',  
    pathMatch: 'full'
},

它不能将"空"路径与带参数的路径匹配。

您的延迟加载路由的语法比我的要复杂得多。我的看起来像这样:

{
    path: 'movies',
    loadChildren: './movies/movie.module#MovieModule'
},
请注意,"

父"路由(在本例中为"movies")是在延迟加载路由上定义的,而不是在加载的模块路由中重复的。

例如:

RouterModule.forChild([
  { path: '', component: MovieListComponent },
  { path: 'search', component: MovieSearchComponent },
  { path: ':id', component: MovieDetailComponent }
])

我认为在您的情况下,加载模块的路由应该如下所示:

export const VenueDetailRoutes: Route[] = [
    {  
       path: ':name/:id', 
       component: VenueDetailComponent,
        data: {
            shouldDetach: true, // Route will be resused. See CustomResuseStrategy.
            title: null
        }
    }    
];

(尽管您可能需要考虑在基本路由正常工作之前放弃自定义重用策略。

最新更新