我完成了对角度routing and navivgation的预加载ngModule的介绍。我对PreloadingStrategy class的预加载方法有疑问。为什么需要第二个参数fn: () => Observable<any>
?请参阅本指南中的示例代码。自定义的PreloadingStrategy类必须在已实现的preload方法中调用load()
。
export class SelectivePreloadingStrategyService implements PreloadingStrategy {
//...
preload(route: Route, load: () => Observable<any>): Observable<any> {
if (<determine if preload>) {
return load();
} else {
return of(null);
}
}
尽管如此,如果预加载只是返回布尔值或可观察值,它应该非常简单,易于使用和易于理解,例如以下代码。该框架根据同步或异步返回值执行load()工作。
preload(route: Route): boolean | Observable<any> {
if (<determine if preload>{
return true; // or return of(true);
} else {
return false; // or return of(false);
}
}