Angular 2 - 为路由器添加密钥

时间:2018-06-11 09:02:24

标签: angular angular-routing

我想知道是否有办法向Routes数组添加密钥,所以当我需要使用路由时,我可以使用密钥而不是显式网址。

我的问题是,在开发过程中我需要更改一些网址,目前我需要在整个项目中搜索和替换,我有这些网址。

使用密钥我会仅在路由模块文件中更改网址

为了澄清我的问题,我想更改此代码:

this.router.navigate(['user', userId, 'profile']);

类似于:

this.router.navigate('userProfileUrl', {id: userId});

在我的路由定义中有类似的内容:

{ userProfileUrl => 'user/:id/profile' }

正如在其他框架中所做的那样 例如:

Laravel

Route::get('user/profile', 'UserController@showProfile')->name('profile');

Ruby-on-rails

get '/patients/:id', to: 'patients#show', as: 'patient'

================更新================

我打开了一个功能请求:
https://github.com/angular/angular/issues/24775

1 个答案:

答案 0 :(得分:0)

是的,你可以
首先从app.module.ts

进入路由器
@NgModule({
  imports: [
    ...,
    RouterModule.forRoot([
     path: 'app',
     component: AppComponent,
     children: [ 
      {
        path: 'user/:id',
        resolve: {
          data: UserDetailResolver,
        },
        component: UserDetailComponent,
      },
     ]
    ]),
   ],
   bootstrap: [AppComponent]
 })

您的路由器导航可能是:

this.router.navigate(['app', 'user'], { queryParams: {id: 10} });

router.navigate的第二个参数定义为HERE

更多:
如果您想在组件渲染之前就预取数据, 您可以使用上面的UserDetailResolver,了解如何实现Resolver in angular router