【问题标题】:Angular6: Error: StaticInjectorError(AppModule)[[object Object]]Angular6:错误:StaticInjectorError(AppModule)[[object Object]]
【发布时间】:2018-12-18 01:30:09
【问题描述】:

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

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

  1. 应用模块
  2. 费用模块
  3. 账户模块

他们每个人都有一个路由模块 事实上,我正在使用延迟加载来跨模块路由。 account-routing-module 包含:

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

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

})
export class AccountsRoutingModule {
}

当我访问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

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

【问题讨论】:

    标签: angular6


    【解决方案1】:

    我知道答案有点晚了,但如果其他人遇到这个问题: 我收到了完全相同的错误消息,这是由于解析格式错误 就我而言,我写了

    const routes: Routes = [
      {
        path: '',
        component: SomeComponent,
        resolve: SomeResolveService
      }
    ];
    

    但应该是这样的:

    const routes: Routes = [
      {
        path: '',
        component: SomeComponent,
        resolve: {someProperty: SomeResolveService}
      }
    ];
    

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

    resolve: {
      data:AccountsResolver
    }
    

    【讨论】:

    • 你是救生员!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2019-05-24
    • 2018-08-18
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多