【问题标题】:Ionic angular Preload all module only on device离子角度预加载所有模块仅在设备上
【发布时间】:2020-09-14 08:08:12
【问题描述】:

如何在设备上使用 preload all 策略,在浏览器上使用 nopreload? 我们可以像这样加载所有模块:

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

这将在任何平台上预加载所有模块, 但我想在浏览器上运行时防止预加载。它只能在设备上预加载

【问题讨论】:

  • 你想解决什么问题,到目前为止你尝试了什么?
  • 我的应用程序很大,延迟不是我在网络上的问题。

标签: angular ionic-framework ionic-native


【解决方案1】:

使用 Ionic 的 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]

了解更多信息;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    相关资源
    最近更新 更多