URL内のどこかにあるrouterLinkにパラメーターを渡す方法は?


208

次のrouterLinkようなルートのパラメータを渡すことができることを知っています

/user/:id

書いて

[routerLink]="['/user', user.id]"

しかし、このようなルートについてはどうですか:

/user/:id/details

このパラメーターを設定する方法はありますか、または別のURLスキームを検討する必要がありますか?

回答:


347

特定の例では、次のようにしますrouterLink

[routerLink]="['user', user.id, 'details']"

コントローラでこれを行うには、以下を注入Routerして使用できます。

router.navigate(['user', user.id, 'details']);

ルーティングとナビゲーションのAngular docs Link Parameters Arrayセクションの詳細情報


これに関する詳細情報を見つけることができるリンクを提供していただけますか?
リファクタリング

4
@CleanCrispCode詳細については、Angularのドキュメントのルーターガイドを参照してください。angular.io
Wojciech Kwiatek

およそ何<button mat-button routerLink="...">View user</button>構文?
ステファン

33

多分それは本当に遅い答えですが、あなたができるparamで別のページをナビゲートしたい場合は、

[routerLink]="['/user', user.id, 'details']"

また、のようなルーティング設定を忘れないでください、

 [path: 'user/:id/details', component:userComponent, pathMatch: 'full']

11

最初にテーブルで設定します:

const routes: Routes = [  
{
  path: 'class/:id/enrollment/:guid',
  component: ClassEnrollmentComponent
 }
];

今タイプスクリプトコード:

this.router.navigate([`class/${classId}/enrollment/${4545455}`]);

別のコンポーネントでパラメーターを受け取る

 this.activatedRoute.params.subscribe(params => {
  let id = params['id'];
  let guid = params['guid'];

  console.log(`${id},${guid}`);
  });

0

これを実現する方法はいくつかあります。

  • [routerLink]ディレクティブを使用
  • Routerクラスのnavigate(Array)メソッド
  • 文字列を取り、promiseを返すnavigateByUrl(string)メソッド

routerLink属性では、機能モジュールを遅延ロードした場合にルーティングモジュールを機能モジュールにインポートするか、app-routing-moduleがAppModuleインポート配列に自動的に追加されない場合はインポートする必要があります。

  • RouterLink
<a [routerLink]="['/user', user.id]">John Doe</a>
<a routerLink="urlString">John Doe</a> // urlString is computed in your component
  • ナビゲート
// Inject Router into your component
// Inject ActivatedRoute into your component. This will allow the route to be done related to the current url
this._router.navigate(['user',user.id], {relativeTo: this._activatedRoute})
  • NavigateByUrl
this._router.navigateByUrl(urlString).then((bool) => {}).catch()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.