直到最近,我们还使用express.js 来为Angular 提供index.html,因为我们需要在应用程序启动之前从数据库填充动态变量。
<script> window .__ envs = {{{json envs}}} </script>
然而,新的Angular 7通过web-worker缓存源index.html。
因此,当我加载网页时,它不会正确加载,直到我单击重新加载。
我尝试从网络工作者中禁用index.html。什么都没发生。
我试图关闭网络工作者并将其从各处删除。现在我不必使用硬重新加载,但第一次加载仍然会显示源文件,而不是通过express.js修改的文件
1)源为什么要加载源文件以及如何获取源文件?
2)我可以在网络工作者中设置它吗?
您可以在模块中使用 APP_INITIALIZER 并使用工厂来加载提供程序服务,如下所示:
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpModule
],
providers: [
ServiceProvider,
{ provide: APP_INITIALIZER, useFactory: ServiceProviderFactory, deps: [ServiceProvider], multi: true }
],
bootstrap: [AppComponent]
})
export class AppModule { }
您的服务将数据作为服务获取:
@Injectable()
export class ServiceProvider{
constructor(private http: Http) {
}
getInitialData(){
// your fetch logic from API
}
}
您的服务工厂(添加到模块中):
export function ServiceProviderFactory(provider: ServiceProvider) {
return () => provider.getInitialData();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)