0

私のアプリケーションは、URL を使用して外部からアクセスされます。特定のエンティティを識別する必要があるため、id パラメータを指定する必要があります。パラメータが存在しない場合もあります。

私の問題は、クエリ パラメーターを使用する要求があることです。ユーザーが特定の要素と対話し、navigationExtras を使用してオプションのパラメーターでリダイレクトされる場合の解決策をたくさん見ました。

path: 'login' を残してクエリ パラメータを追加しようとしましたが、

エラー: どのルートとも一致しません。URL セグメント: 'login%3Fid%3D1'

マトリックス パラメータについても同様ですが、loginidの間の文字列が異なります。

これを解決策として使用できますが、すべてのルートを複製することになり、クエリ パラメーターを持つ要求と一致しません。

{
  path: 'login',
  redirectTo: 'login/',
},
{
  path: 'login/:id',
  component: LoginComponent,
},

なにか提案を?

4

2 に答える 2

0

回答で提供しているのは、ルート パラメーターです。login/:id. :id値にアクセスしようとすると、 from: から取得されactivatedRoute.snapshot.params['id']、どのルートにも一致します: login/123login/234login/someRandomString.

一方、URL の末尾にqueryParamsは が追加されます。. ここでは、とをクエリ パラメータと呼びます。queryStringlogin?query1=something&query2=somethingElsequery1query2

追加するにはqueryParams:

this.router.navigate(['/login], {queryParams: { query1: 'something', query2: somethingElse }); また

<a [routerLink]="['/login']" [queryParams]="{query1: something, query2: somethingElse}">Router Link to Login</a>

于 2018-04-12T19:23:07.027 に答える