角度错误:没有ActivatedRoute的提供者

Vik*_*Vik 27 angular angular-activatedroute

我使用角度5最新,我打击下面的例外

ERROR Error: StaticInjectorError(AppModule)[AppComponent -> ActivatedRoute]: 
  StaticInjectorError(Platform: core)[AppComponent -> ActivatedRoute]: 
    NullInjectorError: No provider for ActivatedRoute!
    at _NullInjector.get (core.js:1002)
    at resolveToken (core.js:1300)
    at tryResolveToken (core.js:1242)
    at StaticInjector.get (core.js:1110)
    at resolveToken (core.js:1300)
    at tryResolveToken (core.js:1242)
    at StaticInjector.get (core.js:1110)
    at resolveNgModuleDep (core.js:10854)
    at NgModuleRef_.get (core.js:12087)
    at resolveDep (core.js:12577)
Run Code Online (Sandbox Code Playgroud)

app.module.ts看起来如下从'@ angular/router'导入{Routes,RouterModule};

@NgModule({
  declarations: [
    AppComponent,
    OptyDetailsComponent,
    GlobalNavbarComponent
  ],
  imports: [
    BrowserAnimationsModule,
    BrowserModule,
    HttpModule,
    HttpClientModule,
    FlexLayoutModule,
    FormsModule,
    MatButtonModule,
    MatInputModule
    RouterModule
  ],
  entryComponents: [
  ], 
  providers: [
    DataStoreService,
    DataObjectsOscService,
    AdobeSignService,
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

Jot*_*edo 38

为了能够提供ActivatedRoute角度元素,您需要将调用结果导入RouterModule.forRoot根模块(AppModule).这是因为返回的模块RouterModule.forRoot包括其中的实例的提供者ActivatedRoute.

所以基本上你需要在根模块中的导入中添加以下内容:

@NgModule({
  ...
  imports: [
    ...
    // Remark: because you havent defined any routes, I have to pass an empty
    // route collection to forRoot, as the first parameter is mandatory.
    RouterModule.forRoot([]),
    ...
  ],
  ...
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

但说实话,你使用它有点奇怪ActivatedRoute,尽管你没有为你的根模块定义任何路由.

详情请见:

ActivatedRoute提供者来源

RouterModule.forRoot()源码

  • 在我的回答中增加了一点澄清。您不需要对代码进行任何更改。 (2认同)