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

Angular 5 - Routing to the same component with different URL's

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

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

但我知道这不是这样做的标准方法,是否有执行相同功能的正确方法?

可以使用,您也可以对同一组件使用重定向和子路由。你做对了。

Refrence:https://angular-2-training-book.rangle.io/handout/routing/routeparams.html

Child Routing REF : https://angular.io/guide/router#child-routing-component

这是定义 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 的值,这可能在组件中很有用。所以最好指定多个路由指向同一个组件作为一个单独的案例。

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

/* 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>

希望有所帮助!