親がアクティブ化されているモジュールのみをプリロードするにはどうすればよいですか?

adamdport

遅延読み込みを実装しました。カスタムプリロード戦略を設定しようとしています

次のURL構造があるとします。

/
/fruit
/fruit/bananas
/fruit/apples
/vegetables

私がヒットした場合/、私はプリロードしたいです/fruitAngularの例に従って、data: {preload: true}ルート構成を入力し、そのデータをチェックしてロードするカスタムプリロード戦略を実装します。これは正常に機能します。

ただし、プリロードしたくない、/bananasまたは/apples実際にに移動するまでは/fruitそれはできるだけ早くとして、/fruitプリロードされ、プリロード戦略は、より多くの持つモジュール見つかった{preload: true}とプリロードを/bananasし、/applesあまりにも。

親モジュールがナビゲートされた後、プリロードモジュールを延期するクリーンな方法はありますか?

adamdport

ルートのdataプロパティを使用して、カスタムでスケーラブルなソリューションを実行することになりました。3つのプロパティを作成しました。

  • preload(ブール値)-trueの場合、Angularがそれを認識したらすぐにプリロードします(のように/fruit)。これはAngularがドキュメントで私たちに与えた基本的な例です
  • preloadCheckpoint(列挙型)-各アプリの「チェックポイント」を自分の列挙型で定義します。だから私の質問の例で/fruitは、チェックポイントであり、私はそれに定義しますdata: {preloadCheckpoint: myCheckpointEnum.FRUIT}
  • preloadAfterCheckpoint(列挙型)-特定のチェックポイントに到達するまでプリロードを延期するようにこれを定義します。これをで定義する/bananasと、FRUITチェックポイントのあるルートが定義されるまで、バナナモジュールはロードされません。

チェックポイントリストを最新の状態に保つことができるようにルート変更をサブスクライブし、プリロードを試行するたびにそのリストをチェックします。

export class CustomPreloadingStrategy implements PreloadingStrategy {
  checkpoints: Set<PreloadCheckpoints> = new Set<PreloadCheckpoints>(); 

  constructor(router: Router, route: ActivatedRoute){

    router.events.pipe(
     filter(event => event instanceof NavigationEnd),
      map(() => route),
      map(route => {
        while (route.firstChild) route = route.firstChild; //gets the deepest child
        return route;
      }),
      filter(route => route.outlet === 'primary'))
      .subscribe((route) => {
         if(route.snapshot.data['preloadCheckpoint'] !== undefined){ 
           this.checkpoints.add(route.snapshot.data['preloadCheckpoint']);
         }
    });
  }

  preload(route: Route, load: () => Observable<any>): Observable<any> {    
    if (route.data && ( route.data['preload'] || this.checkpoints.has(route.data['preloadAfterCheckpoint']) )){
      return load(); //preload this route
    } else {
      return of(null);
    }
  }
}

export enum PreloadCheckpoints {
  FRUIT
}

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

モジュールがディスク上のどこからロードされているかを知るにはどうすればよいですか?

分類Dev

スクリプトがWindowsで実行されている場合にのみ、モジュールが確実にロードされるようにするにはどうすればよいですか?

分類Dev

コンストラクターに渡されたプロパティのみをシリアル化するにはどうすればよいですか?

分類Dev

コンストラクターに渡されたプロパティのみをシリアル化するにはどうすればよいですか?

分類Dev

キーボードのコンテナアプリからカスタムキーボードがアクティブ化されているかどうかを検出するにはどうすればよいですか?

分類Dev

Gradle親モジュールのサブモジュールのみをビルドするにはどうすればよいですか?

分類Dev

DMアプリウィンドウが最小化されているときに、遅延タスクによって投稿されたモーダルダイアログを処理するにはどうすればよいですか?

分類Dev

gradleを使用して複数のモジュールのアーカイブをアップロードするにはどうすればよいですか?

分類Dev

既存のネストされたリポジトリ(サブディレクトリですでにチェックアウトされている)をサブモジュールとして親Gitリポジトリに追加するにはどうすればよいですか?

分類Dev

node_modulesではなくプロジェクトの親ディレクトリからTypeScriptモジュールが解決されないようにするにはどうすればよいですか?

分類Dev

親モジュールをすでにインストールしているときに実行可能ファイルが実行されないようにする、不足しているユーティリティモジュールを解決するにはどうすればよいですか?

分類Dev

同じモジュールにテンプレートリテラルのブロックを実装するにはどうすればよいですか?

分類Dev

アプリが開かれ、ユーザーがその瞬間にPNを受信しているときに、Androidアプリに表示されるOneSignalモーダルビューで削除するにはどうすればよいですか?(リアクトネイティブ)

分類Dev

オブジェクトがどのモジュールで定義されているかを確認するにはどうすればよいですか?

分類Dev

ルーターストアを使用して有効なモジュールでナビゲーションするときに、アクティブ化されたルートを取得するにはどうすればよいですか?

分類Dev

テーブルをクエリしてmySQLの2つのフィールドでグループ化するにはどうすればよいですか?

分類Dev

ac#ソリューションのすべてのプロジェクトが同じバージョンのサードパーティライブラリを使用するようにするにはどうすればよいですか?

分類Dev

モジュールの解決中にtypescript2.0がすべての親ディレクトリを上るのをブロックするにはどうすればよいですか?

分類Dev

Pythonモックモジュールを使用して、スタブしたいメソッドのみをスタブし、他のプロパティとメソッドをそのままにするようにクラスにパッチを適用するにはどうすればよいですか?

分類Dev

他のサブモジュールの状態をリセットせずに、親プロジェクトにサブモジュールを追加してコミットするにはどうすればよいですか?

分類Dev

テストスクリプトでプロジェクトからモジュールをロードするにはどうすればよいですか?

分類Dev

listViewが空でない場合にのみ、contextmenustripメニューをアクティブ化/有効化するにはどうすればよいですか?

分類Dev

Angular-遅延ロードされたモジュールでAUXルートをアクティブ化するにはどうすればよいですか?

分類Dev

nodejsのurlモジュールのURLクラスを拡張してプロパティを追加するにはどうすればよいですか?

分類Dev

グリッドビューのTagプロパティに保存されているオブジェクトデータにアクセスするにはどうすればよいですか?

分類Dev

すべてのスキーマバインドビュー(および「フィルター処理されたインデックス」のようなテーブルの切り捨てを防ぐ他のオブジェクト)をスクリプト化するにはどうすればよいですか?

分類Dev

次のページの読み込みが始まる前にJavaScriptをアクティブ化するにはどうすればよいですか?

分類Dev

光沢のあるリアクティブプロットが、他のすべてのリアクティブが変更を終了したときにのみ変更されるようにするにはどうすればよいですか?

分類Dev

クラウドHSMサービスプロバイダーがシミュレーションソフトウェアではなく物理ハードウェアセキュリティモジュールを実際に使用していることを確認するにはどうすればよいですか?

Related 関連記事

  1. 1

    モジュールがディスク上のどこからロードされているかを知るにはどうすればよいですか?

  2. 2

    スクリプトがWindowsで実行されている場合にのみ、モジュールが確実にロードされるようにするにはどうすればよいですか?

  3. 3

    コンストラクターに渡されたプロパティのみをシリアル化するにはどうすればよいですか?

  4. 4

    コンストラクターに渡されたプロパティのみをシリアル化するにはどうすればよいですか?

  5. 5

    キーボードのコンテナアプリからカスタムキーボードがアクティブ化されているかどうかを検出するにはどうすればよいですか?

  6. 6

    Gradle親モジュールのサブモジュールのみをビルドするにはどうすればよいですか?

  7. 7

    DMアプリウィンドウが最小化されているときに、遅延タスクによって投稿されたモーダルダイアログを処理するにはどうすればよいですか?

  8. 8

    gradleを使用して複数のモジュールのアーカイブをアップロードするにはどうすればよいですか?

  9. 9

    既存のネストされたリポジトリ(サブディレクトリですでにチェックアウトされている)をサブモジュールとして親Gitリポジトリに追加するにはどうすればよいですか?

  10. 10

    node_modulesではなくプロジェクトの親ディレクトリからTypeScriptモジュールが解決されないようにするにはどうすればよいですか?

  11. 11

    親モジュールをすでにインストールしているときに実行可能ファイルが実行されないようにする、不足しているユーティリティモジュールを解決するにはどうすればよいですか?

  12. 12

    同じモジュールにテンプレートリテラルのブロックを実装するにはどうすればよいですか?

  13. 13

    アプリが開かれ、ユーザーがその瞬間にPNを受信しているときに、Androidアプリに表示されるOneSignalモーダルビューで削除するにはどうすればよいですか?(リアクトネイティブ)

  14. 14

    オブジェクトがどのモジュールで定義されているかを確認するにはどうすればよいですか?

  15. 15

    ルーターストアを使用して有効なモジュールでナビゲーションするときに、アクティブ化されたルートを取得するにはどうすればよいですか?

  16. 16

    テーブルをクエリしてmySQLの2つのフィールドでグループ化するにはどうすればよいですか?

  17. 17

    ac#ソリューションのすべてのプロジェクトが同じバージョンのサードパーティライブラリを使用するようにするにはどうすればよいですか?

  18. 18

    モジュールの解決中にtypescript2.0がすべての親ディレクトリを上るのをブロックするにはどうすればよいですか?

  19. 19

    Pythonモックモジュールを使用して、スタブしたいメソッドのみをスタブし、他のプロパティとメソッドをそのままにするようにクラスにパッチを適用するにはどうすればよいですか?

  20. 20

    他のサブモジュールの状態をリセットせずに、親プロジェクトにサブモジュールを追加してコミットするにはどうすればよいですか?

  21. 21

    テストスクリプトでプロジェクトからモジュールをロードするにはどうすればよいですか?

  22. 22

    listViewが空でない場合にのみ、contextmenustripメニューをアクティブ化/有効化するにはどうすればよいですか?

  23. 23

    Angular-遅延ロードされたモジュールでAUXルートをアクティブ化するにはどうすればよいですか?

  24. 24

    nodejsのurlモジュールのURLクラスを拡張してプロパティを追加するにはどうすればよいですか?

  25. 25

    グリッドビューのTagプロパティに保存されているオブジェクトデータにアクセスするにはどうすればよいですか?

  26. 26

    すべてのスキーマバインドビュー(および「フィルター処理されたインデックス」のようなテーブルの切り捨てを防ぐ他のオブジェクト)をスクリプト化するにはどうすればよいですか?

  27. 27

    次のページの読み込みが始まる前にJavaScriptをアクティブ化するにはどうすればよいですか?

  28. 28

    光沢のあるリアクティブプロットが、他のすべてのリアクティブが変更を終了したときにのみ変更されるようにするにはどうすればよいですか?

  29. 29

    クラウドHSMサービスプロバイダーがシミュレーションソフトウェアではなく物理ハードウェアセキュリティモジュールを実際に使用していることを確認するにはどうすればよいですか?

ホットタグ

アーカイブ