问题
i m using angular 5 latest and i am hitting below exception
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)
the app.module.ts looks like below import { Routes, RouterModule } from '@angular/router';
@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 { }
回答1:
For being able to provide ActivatedRoute
into your angular elements, you need to import the result of calling RouterModule.forRoot
into your root module (AppModule). This is because the module returned by RouterModule.forRoot
includes the provider for instances of ActivatedRoute
, among others.
So basically you need to add the following to your imports in the root module:
@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 { }
But to be honest, its kinda odd that you use ActivatedRoute
, despite the fact that you haven't defined any routes for your root module.
For further details see:
ActivatedRoute provider source
RouterModule.forRoot() source
来源:https://stackoverflow.com/questions/49039457/angular-error-no-provider-for-activatedroute