【问题标题】:AppModule is reinitialized for each routeAppModule 为每个路由重新初始化
【发布时间】:2020-06-07 02:57:17
【问题描述】:

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

有什么想法吗?

这是我的 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】:

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

    • 要求您的浏览器从头开始访问 URL(例如在另一个选项卡中或按 CTRL+R)。
    • 要求应用的原生 DOM 在新上下文中路由用户(例如使用原生 href 属性时)。

    无论如何,您的代码似乎是正确的,并且您似乎已经考虑到使用单例服务的后果,因此问题很可能不是来自提供问题的服务。

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多