这个问题通常是由于预加载策略(PreloadingStrategy)的实现中存在错误导致的。下面是一种可能的解决方法,你可以尝试在你的代码中进行修改:
import { PreloadingStrategy, Route } from '@angular/router';
import { Observable, of } from 'rxjs';
export class CustomPreloadingStrategy implements PreloadingStrategy {
preload(route: Route, load: () => Observable): Observable {
return of(null).pipe(
// Add a delay before preloading the module
delay(1000),
flatMap(() => load())
);
}
}
import { NgModule } from '@angular/core';
import { RouterModule, PreloadingStrategy } from '@angular/router';
import { CustomPreloadingStrategy } from './path/to/custom-preloading-strategy';
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: CustomPreloadingStrategy })
],
providers: [
{ provide: PreloadingStrategy, useClass: CustomPreloadingStrategy }
]
})
export class AppModule { }
通过以上修改,你的预加载策略应该会按预期工作,而不会出现无限调用的问题。当用户访问页面时,预加载策略会等待一段时间后再开始加载模块。你可以根据需要调整延迟时间。