不同路线中的角度重用组件

时间:2017-07-10 03:46:50

标签: angular angular-router

我有以下路由,id是可选参数,因此用户可以加载信息,或者如果没有提供id,他们可以添加信息。 我希望能够重用该组件,以便页面不必重新加载(在ngOnInit中调用api),但是因为它们是两个单独的路径,因此角度始终会创建一个全新的组件并调用ngOnInit。

我尝试过使用儿童,但仍然遇到同样的问题

(这是使用角度4路由器)

const routes: Routes = [
  {
    path: 'stuff/info',
    component: InfoComponent,
  },
  {
    path: 'stuff/info/:id',
    component: InfoComponent,
  },
]

1 个答案:

答案 0 :(得分:2)

Angular有必需,可选和查询参数。 "可选"您定义的参数不是"可选"因为Angular已经定义了可选参数。对于" true"可选参数,您不需要将它们定义为路径配置的一部分。所以你可以像stuff/info这样定义一条路线:

const routes: Routes = [
  {
    path: 'stuff/info',
    component: InfoComponent,
  }
]

然后您可以使用.navigate或routerLink添加可选参数,如下图所示。

enter image description here

注意:从Angular 4开始,这应该是

this.route.snapshot.paramMap.get('start')

或者,您可以始终传递id并在create上传递0或其他一些已知值。我在这里有一个完整的例子:https://github.com/DeborahK/Angular-Routing