68 votes

Aucun fournisseur pour ChildrenOutletContexts (injectionError)

Je reçois le message d'erreur suivant lorsque j'utilise Angular CLI pour générer un module de routage pour mon application:

 ERROR Error: No provider for ChildrenOutletContexts!
    at injectionError (core.es5.js:1169)
    at noProviderError (core.es5.js:1207)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._throwOrNull (core.es5.js:2649)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._getByKeyDefault (core.es5.js:2688)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._getByKey (core.es5.js:2620)
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_.get (core.es5.js:2489)
    at resolveNgModuleDep (core.es5.js:9481)
    at NgModuleRef_.webpackJsonp.../../../core/@angular/core.es5.js.NgModuleRef_.get (core.es5.js:10569)
    at resolveDep (core.es5.js:11072)
    at createClass (core.es5.js:10936)
 

J'ai généré le module de routage avec Angular CLI comme ceci:

 ng generate module --routing App
 

Voici le contenu du module de routage:

 import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { MyComponent } from './my/my.component';

const routes: Routes = [
  {
    path: '',
    component: MyComponent,
  },
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule],
  declarations: []
})
export class AppRoutingModule { }
 

Et voici ce que j'ai dans mes app.component.html :

 <div class="container" role="main">
    <router-outlet></router-outlet>
</div>
 

Quelle peut être la raison de cette erreur?

149voto

DWilches Points 1616

Pour résoudre ce problème, modifiez cette ligne:

imports: [RouterModule.forChild(routes)],

pour:

imports: [RouterModule.forRoot(routes)],

L'erreur est provoquée à cause RouterModule.forChild() génère un module qui contient les directives nécessaires et des routes, mais n'inclut pas le service de routage. C'est ce qu' RouterModule.forRoot : elle génère un module qui contient les directives nécessaires, les itinéraires, et le service de routage.

Plus d'informations dans Angulaire docs: Angulaires - Routeur Module.

2voto

importations: [RouterModule.forRoot (routes)]

Changer cette ligne dans RoutingModuleclass

0voto

Shubham Verma Points 2132

Vous pouvez le faire aussi:

J'ai créé un fichier route pour séparer tous les routages.

Importez vos itinéraires dans votre module comme ceci:

app.route.ts:

 import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './components/homeComponent/home.component';
import { ListComponent } from './components/listComponent/list.component';

const appRoutes: Routes = [
    { path: 'home', component: HomeComponent },
    { path: 'list', component: ListComponent },
    { path: '', component: ListComponent },
];

export const routing = RouterModule.forRoot(appRoutes);
 

Maintenant, en app.module.ts vous devez importer les routing :

 import { routing } from './app.route';



@NgModule({
  declarations: [
    AppComponent, TestComponent
  ],
  imports: [
    routing,
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
 

Ça marche pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X