Как предварительно загрузить весь модуль ioni c только на устройство? - PullRequest
4 голосов
/ 27 мая 2020

Как использовать предварительную загрузку всех стратегий на устройстве и без предварительной загрузки в браузере? мы можем загрузить весь модуль следующим образом:

imports: [
CommonModule,
RouterModule.forRoot(appRoutes, { preloadingStrategy: PreloadAllModules }),
...
],

Это предварительно загрузит весь модуль на любой платформе, но я хочу предотвратить предварительную загрузку при запуске в браузере. И он должен предварительно загружаться только на устройстве

1 Ответ

5 голосов
/ 27 мая 2020

Возможно с Ioni c s Platform и Angular PreloadingStrategy. У вас должна быть собственная стратегия предварительной загрузки. Вот пример стратегии, делающей то, что вы хотите.

import { Injectable } from '@angular/core';
import { PreloadingStrategy, Route } from '@angular/router';
import { Observable, of } from 'rxjs';
import { Platform } from '@ionic/angular';

@Injectable({
    providedIn: 'root'
})
export class LocalOnlyPreloadingStrategy implements PreloadingStrategy {
    constructor(private platform: Platform) { }
    public preload(route: Route, fn: () => Observable<boolean>): Observable<boolean> {
        if (this.platform.is('hybrid')) {
            // Running on a device
            return fn();
        }
        // Not running on a device
        return of(false);
    }
}

Вы можете импортировать и использовать так же, как PreloadAllModules в своем коде.

imports: [
CommonModule,
RouterModule.forRoot(appRoutes, { preloadingStrategy: LocalOnlyPreloadingStrategy }),
...
],
providers: [LocalOnlyPreloadingStrategy]

Для получения дополнительной информации;

...