为每个路由重新初始化AppModule

问题描述 投票:2回答:1

我有一个Angular 9应用程序,我注意到我每次从一条路线导航到另一条路线时都会重新初始化/重新初始化我的服务。经过长时间的调试和试用后,我决定登录AppModule的构造函数,并注意到它会针对每条路线进行调用。注意:我使用provideIn:'root'注入服务。我也尝试过在AppModule provider属性中声明服务,而不是使用ProvidedIn,但是结果仍然相同。

有什么想法吗?

这是我的AppModule:

@NgModule({
  declarations: [
    AppComponent,
    ...
  ],
  imports: [
    BrowserModule,
    StoreModule.forRoot({user : userReducer}),
    AppRoutingModule,
    BrowserAnimationsModule,
    FormsModule,
    AngularFireModule.initializeApp(environment.firebase),
    AngularFirestoreModule,
    AngularFireStorageModule,
    ReactiveFormsModule,
    MatAutocompleteModule,
    NgbModule.forRoot(),
    FontAwesomeModule,
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { 
  constructor(){
    console.log('MODULE INIT');
  }
}

这是我的路由模块:

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
angular typescript angular2-routing
1个回答
1
投票

您描述的行为使我认为您的应用在每次导航时都会重新加载自身的新状态。可能在以下情况下发生:

  • 要求浏览器从头开始访问URL(例如在另一个选项卡中或按CTRL + R)。
  • 询问应用程序的本机DOM以在新的上下文中路由用户(如使用本机href属性时。)>
  • 在任何情况下,您的代码看起来都是正确的,并且您似乎已经考虑到使用单例服务的后果,因此问题很可能并非来自提供麻烦的服务。

© www.soinside.com 2019 - 2024. All rights reserved.