我有以下路由,id是可选参数,因此用户可以加载信息,或者如果没有提供id,他们可以添加信息。 我希望能够重用该组件,以便页面不必重新加载(在ngOnInit中调用api),但是因为它们是两个单独的路径,因此角度始终会创建一个全新的组件并调用ngOnInit。
我尝试过使用儿童,但仍然遇到同样的问题
(这是使用角度4路由器)
const routes: Routes = [
{
path: 'stuff/info',
component: InfoComponent,
},
{
path: 'stuff/info/:id',
component: InfoComponent,
},
]
答案 0 :(得分:2)
Angular有必需,可选和查询参数。 "可选"您定义的参数不是"可选"因为Angular已经定义了可选参数。对于" true"可选参数,您不需要将它们定义为路径配置的一部分。所以你可以像stuff/info
这样定义一条路线:
const routes: Routes = [
{
path: 'stuff/info',
component: InfoComponent,
}
]
然后您可以使用.navigate或routerLink添加可选参数,如下图所示。
注意:从Angular 4开始,这应该是
this.route.snapshot.paramMap.get('start')
或者,您可以始终传递id并在create上传递0或其他一些已知值。我在这里有一个完整的例子:https://github.com/DeborahK/Angular-Routing