离子角预加载所有模块仅在设备上

Moh*_*Mrg 5 ionic-framework ionic-native angular

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

imports: [
CommonModule,
RouterModule.forRoot(appRoutes, { preloadingStrategy: PreloadAllModules }),
...
],
Run Code Online (Sandbox Code Playgroud)

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

cer*_*ner 6

使用 IonicPlatform和 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以像PreloadAllModules在代码中使用一样导入和使用。

imports: [
CommonModule,
RouterModule.forRoot(appRoutes, { preloadingStrategy: LocalOnlyPreloadingStrategy }),
...
],
providers: [LocalOnlyPreloadingStrategy]
Run Code Online (Sandbox Code Playgroud)

想要查询更多的信息;