Angular 5-路由到具有不同URL的相同组件

时间:2018-06-20 09:14:23

标签: angular angular-ui-router angular2-routing

我有以下应该路由到同一组件的路由,我可以通过使用以下结构来使其工作。

const carModuleRoutes: Routes = [
    { path: 'car/:category/:carId', component: CarDetailComponent},
    { path: 'car/:carId', component: CarDetailComponent},
];

但是我知道这不是标准的方法,是否有适当的方法来执行相同的功能?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:3)

这是定义routes及其各自的components的标准方法。您在routing模块内部,并且尝试定义routes,而不是components

因此,请勿忽略将相同的component分组并为其定义routes的想法。您所做的似乎很合适。

编辑:

您的情况非常简单,您可以执行以下操作:

const carModuleRoutes: Routes = [
    { path: 'car/:category/:carId', redirectTo : 'car/:carId', pathMatch : 'full'},
    { path: 'car/:carId', component: CarDetailComponent},
];

注意:

在这种情况下,您的URL将会更改,并且您可能会丢失:category的值,该值可能在组件中很有用。因此,最好单独指定多个指向同一组件的路由。

答案 2 :(得分:1)

我解决了以下问题,我需要使用以下方法使用相同的组件导航到其他路线:

/* My Grid route: */
const GridRoutes: Routes = [
    {
        path: 'grid',
        component: BasicLayoutComponent,
        children: [
            {
                path: '',
                component: ListItemComponent
            },
            {
                path : 'view-files/:id',
                component : ListItemComponent
            },
            {
                path : 'filter',
                component: ListItemComponent
            }
        ]
    }
];

@Component({
  templateUrl: './list-item.component.html',
})
export class ListItemComponent {

   ...
   ...

    /* Function to navigate */
    navigateToRoute(path: string) {
       this.router.navigate([ path ]);
    }
}

然后,在模板(list-item.component.html)上调用导航功能。

<a (click)="navigateToRoute('page/edit/' + dataItem.id)">Link</a>

希望有帮助!