Angular6:错误:StaticInjectorError(AppModule)[[object Object]]

abb*_*bas 2 angular6

我已经搜索了很多有关此错误的信息,没有什么有用的,这种角度的错误通常会告诉您缺少提供程序的对象是什么,但是这次给出的是StaticInjectorError(AppModule)[[ object Object ]],所以我无法不知道。

在我的应用程序中,我有单独的模块:

  1. appModule
  2. 费用模块
  3. 帐户模块

他们每个人都有一个路由模块。的确,我正在使用lazyloading在模块之间进行路由。帐户路由模块包含:

const routes: Routes = [
      {
        path: '',
        component: AccountsComponent,
        canActivate: [AuthGuardService],
        resolve: {
          data:{
            AccountsResolver
          }
        }
      }
    ];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule],
  providers: [
    AccountsResolver
  ]

})
export class AccountsRoutingModule {
}
Run Code Online (Sandbox Code Playgroud)

当我访问accountscomponent时,出现以下错误:

ERROR Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[[object Object]]: 
  StaticInjectorError(Platform: core)[[object Object]]: 
    NullInjectorError: No provider for [object Object]!
Error: StaticInjectorError(AppModule)[[object Object]]: 
  StaticInjectorError(Platform: core)[[object Object]]: 
    NullInjectorError: No provider for [object Object]!
    at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (vendor.js:53611)
    at resolveToken (vendor.js:53850)
    at tryResolveToken (vendor.js:53795)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (vendor.js:53690)
    at resolveToken (vendor.js:53850)
    at tryResolveToken (vendor.js:53795)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (vendor.js:53690)
    at resolveNgModuleDep (vendor.js:60745)
    at NgModuleRef_.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get (vendor.js:61433)
    at resolveNgModuleDep (vendor.js:60745)
    at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (vendor.js:53611)
    at resolveToken (vendor.js:53850)
    at tryResolveToken (vendor.js:53795)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (vendor.js:53690)
    at resolveToken (vendor.js:53850)
    at tryResolveToken (vendor.js:53795)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (vendor.js:53690)
    at resolveNgModuleDep (vendor.js:60745)
    at NgModuleRef_.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get (vendor.js:61433)
    at resolveNgModuleDep (vendor.js:60745)
    at resolvePromise (polyfills.js:3136)
    at resolvePromise (polyfills.js:3093)
    at polyfills.js:3195
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (polyfills.js:2743)
    at Object.onInvokeTask (vendor.js:56325)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (polyfills.js:2742)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (polyfills.js:2510)
    at drainMicroTaskQueue (polyfills.js:2917)
defaultErrorLogger @ vendor.js:54201
Run Code Online (Sandbox Code Playgroud)

但是当我在解析中注释掉AccountsResolver时,组件将正常加载而没有任何错误。我不知道错误是由于实现Resolve的AccountsResolver还是其他原因引起的。任何想法将不胜感激。谢谢。

Mik*_*ike 8

我知道答案有点晚了,但是如果有人遇到这个问题:我有完全相同的错误消息,这是由于格式错误而导致的。

const routes: Routes = [
  {
    path: '',
    component: SomeComponent,
    resolve: SomeResolveService
  }
];
Run Code Online (Sandbox Code Playgroud)

但这应该像:

const routes: Routes = [
  {
    path: '',
    component: SomeComponent,
    resolve: {someProperty: SomeResolveService}
  }
];
Run Code Online (Sandbox Code Playgroud)

所以我想删除多余的对象应该可以解决问题:

resolve: {
  data:AccountsResolver
}
Run Code Online (Sandbox Code Playgroud)