Angular 7でRouteのデフォルトのクエリパラメータを設定するにはどうすればよいですか?

frot.io

Angular-7-Applicationでは、@ ngrxと@ngrx / router-storeを使用して、クエリパラメーターを状態にします。

アプリケーションのいくつかのコンポーネントは、ページ付けされたリストです。すべてのリストがコンポーネントとしてあり、Pagination-Componentがすべてのリストに含まれています。

現在のページはクエリパラメータとしてURLに保存されuser/:userId/agent?page=0、PaginationComponentはから現在のページを取得しますstate.router.state.queryParams.pageただし、ユーザーがURLuser/:userId/agentアクセスすると、queryParams.pageundefinedが返されます。

state.router.state.queryParams.page || 0すべてのコンポーネントで使用することでこれを解決できますが、もっと簡単な方法があるのではないかと思います-クエリパラメータのないルートをクエリパラメータのあるルートにリダイレクトできますか?

最も明白なリダイレクトを使用してみました:

{ path: 'user/:userId/agent', redirectTo: '/user/:userId/agent?page=0', pathMatch: 'full' },
{ path: 'user/:userId/agent?page=0', component: AgentListComponent },

しかし、私は得るError: Cannot match any routes. URL Segment: 'user/max/agent'

私が見つけた唯一の機能要求だったこの1、エラーが表示されます上記の。

user10747134

特にあなたの質問のために:

クエリパラメータのないルートをクエリパラメータのあるルートにリダイレクトできますか?

私はこれがうまくいくとは思わないので?クエリにはセパレータがあり、URLのクエリ文字列の一部ではありません。

代替案1 -ngrxを使用しているので、それを行う1つの方法は、カスタムシリアライザーを使用することです。ngrx.ioサイトのドキュメントには、シリアル化を使用してパラメーターを返す例が示されています。これは、パラメータが存在しない場合にデフォルトをパラメータに追加するロジックを追加できる場所です。これは各ルートで発生するため、あまり理想的ではない可能性があることを否認しますが、ルートを単純化することができます。

import { Params, RouterStateSnapshot } from '@angular/router';
import { RouterStateSerializer } from '@ngrx/router-store';

export interface RouterStateUrl {
  url: string;
  params: Params;
  queryParams: Params;
}

export class CustomSerializer implements RouterStateSerializer<RouterStateUrl> {
  serialize(routerState: RouterStateSnapshot): RouterStateUrl {
    let route = routerState.root;

    while (route.firstChild) {
      route = route.firstChild;
    }

    const {
      url,
      root: { queryParams },
    } = routerState;
    const { params } = route;

    // Add here
    if (<insert url logic> && queryParams.page === undefined) {
        queryParams.page = 0;
    }

    // Only return an object including the URL, params and query params
    // instead of the entire snapshot
    return { url, params, queryParams };
  }
}

代替案2 -HttpClientをラップするか、より好ましくは、これをチェックしてページがない場合はリクエストに追加する汎用ページリストメソッドを作成できます。この回答は、パラメータの追加を実現する方法の例を示しています。

代替案3-ページをパスの一部として使用し、必要に応じて回避策/変更を行ってリクエストを生成できます。

{ path: 'user/:userId/agent', redirectTo: '/user/:userId/agent/0', pathMatch: 'full' },
{ path: 'user/:userId/agent/:page', component: AgentListComponent },

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Angular2で@Inputのデフォルトパラメータを設定するにはどうすればよいですか?

分類Dev

Angular 9では、フォームをローカルストレージに設定するときに、保存されない特定のパラメーターを指定するにはどうすればよいですか?

分類Dev

Angular 2コンポーネントのプロパティのデフォルト値を設定するにはどうすればよいですか?

分類Dev

Angular 2-Typescriptでオプションのクラスパラメーターを設定するにはどうすればよいですか?

分類Dev

Angular2ルーター(@ angular / router)、デフォルトルートを設定するにはどうすればよいですか?

分類Dev

Angular 7のルートガード句のルートパラメータにアクセスするにはどうすればよいですか?

分類Dev

Angular Material DragAndDropを使用してドラッグ可能な要素のデフォルト位置を設定するにはどうすればよいですか?

分類Dev

Angular 2のngrxエフェクトのパラメーターにアクセスするにはどうすればよいですか?

分類Dev

Angular6でリアクティブフォームコントロールに値を設定するにはどうすればよいですか?

分類Dev

Angular 7で静的ファイルのベースパスを設定するにはどうすればよいですか?

分類Dev

Angular Chosenでデフォルトの選択値を設定するにはどうすればよいですか?

分類Dev

リアクティブフォームを使用してAngular7で「少なくとも1つのフィールドに入力する必要がある」検証を設定するにはどうすればよいですか?

分類Dev

Angular 2 ng-bootstrapの先行入力のデフォルト/初期値を設定するにはどうすればよいですか?

分類Dev

Angular 2の以前のAPIリクエストからのパラメーターを必要とするAPIからデータを取得するにはどうすればよいですか?

分類Dev

Angular 5のparamMapからクエリパラメーターを取得するにはどうすればよいですか?

分類Dev

Angular 6のクエリパラメータで「routerLinkActive」を使用するにはどうすればよいですか?

分類Dev

Http POSTリクエストの本文にある画像ファイルを他のフォームデータAngular5と一緒に送信するにはどうすればよいですか?バックエンドはLaravelのInterventionパッケージを使用しています

分類Dev

Angular 2アプリのルートにアクセスするときにクエリ文字列パラメーターをURLに保持するにはどうすればよいですか?

分類Dev

プログラムでAngular 2フォームコントロールをダーティに設定するにはどうすればよいですか?

分類Dev

Angularのフォーム検証エラーリストにエラーを追加するにはどうすればよいですか?

分類Dev

Angular2ルートのパラメーターをAngularの方法で取得するにはどうすればよいですか?

分類Dev

AngularでGETリクエストでURLパラメータを使用するにはどうすればよいですか?

分類Dev

Angular-Datatables-デフォルト設定を使用してテーブルを並べ替え可能にするにはどうすればよいですか?

分類Dev

Angular 11で2つの親のルートパラメータにアクセスするにはどうすればよいですか?

分類Dev

リアクティブフォームでAngularの入力フィールドに触れていない後に非同期バリデーターをトリガーするにはどうすればよいですか?

分類Dev

Angularでは、投稿リクエストの応答をパラメーターの1つとして渡して、別の投稿リクエストに入れるにはどうすればよいですか?

分類Dev

Angular 6プロジェクトの拡張性の高いフォルダー構造を定義するにはどうすればよいですか?

分類Dev

Angular 7のFirestoreクエリからデータのObservableを取得するにはどうすればよいですか?

分類Dev

AngularのHttpClientを使用する場合、URIにマトリックスパラメーターを使用してバックエンドにリクエストを行うにはどうすればよいですか?

Related 関連記事

  1. 1

    Angular2で@Inputのデフォルトパラメータを設定するにはどうすればよいですか?

  2. 2

    Angular 9では、フォームをローカルストレージに設定するときに、保存されない特定のパラメーターを指定するにはどうすればよいですか?

  3. 3

    Angular 2コンポーネントのプロパティのデフォルト値を設定するにはどうすればよいですか?

  4. 4

    Angular 2-Typescriptでオプションのクラスパラメーターを設定するにはどうすればよいですか?

  5. 5

    Angular2ルーター(@ angular / router)、デフォルトルートを設定するにはどうすればよいですか?

  6. 6

    Angular 7のルートガード句のルートパラメータにアクセスするにはどうすればよいですか?

  7. 7

    Angular Material DragAndDropを使用してドラッグ可能な要素のデフォルト位置を設定するにはどうすればよいですか?

  8. 8

    Angular 2のngrxエフェクトのパラメーターにアクセスするにはどうすればよいですか?

  9. 9

    Angular6でリアクティブフォームコントロールに値を設定するにはどうすればよいですか?

  10. 10

    Angular 7で静的ファイルのベースパスを設定するにはどうすればよいですか?

  11. 11

    Angular Chosenでデフォルトの選択値を設定するにはどうすればよいですか?

  12. 12

    リアクティブフォームを使用してAngular7で「少なくとも1つのフィールドに入力する必要がある」検証を設定するにはどうすればよいですか?

  13. 13

    Angular 2 ng-bootstrapの先行入力のデフォルト/初期値を設定するにはどうすればよいですか?

  14. 14

    Angular 2の以前のAPIリクエストからのパラメーターを必要とするAPIからデータを取得するにはどうすればよいですか?

  15. 15

    Angular 5のparamMapからクエリパラメーターを取得するにはどうすればよいですか?

  16. 16

    Angular 6のクエリパラメータで「routerLinkActive」を使用するにはどうすればよいですか?

  17. 17

    Http POSTリクエストの本文にある画像ファイルを他のフォームデータAngular5と一緒に送信するにはどうすればよいですか?バックエンドはLaravelのInterventionパッケージを使用しています

  18. 18

    Angular 2アプリのルートにアクセスするときにクエリ文字列パラメーターをURLに保持するにはどうすればよいですか?

  19. 19

    プログラムでAngular 2フォームコントロールをダーティに設定するにはどうすればよいですか?

  20. 20

    Angularのフォーム検証エラーリストにエラーを追加するにはどうすればよいですか?

  21. 21

    Angular2ルートのパラメーターをAngularの方法で取得するにはどうすればよいですか?

  22. 22

    AngularでGETリクエストでURLパラメータを使用するにはどうすればよいですか?

  23. 23

    Angular-Datatables-デフォルト設定を使用してテーブルを並べ替え可能にするにはどうすればよいですか?

  24. 24

    Angular 11で2つの親のルートパラメータにアクセスするにはどうすればよいですか?

  25. 25

    リアクティブフォームでAngularの入力フィールドに触れていない後に非同期バリデーターをトリガーするにはどうすればよいですか?

  26. 26

    Angularでは、投稿リクエストの応答をパラメーターの1つとして渡して、別の投稿リクエストに入れるにはどうすればよいですか?

  27. 27

    Angular 6プロジェクトの拡張性の高いフォルダー構造を定義するにはどうすればよいですか?

  28. 28

    Angular 7のFirestoreクエリからデータのObservableを取得するにはどうすればよいですか?

  29. 29

    AngularのHttpClientを使用する場合、URIにマトリックスパラメーターを使用してバックエンドにリクエストを行うにはどうすればよいですか?

ホットタグ

アーカイブ