web-dev-qa-db-fra.com

Erreur: Impossible de faire correspondre les itinéraires. Segment URL:

J'essaie de suivre ce tutoriel http://onehungrymind.com/named-router-outlets-in-angular-2/ mais je reçois l'erreur.

EXCEPTION: Non capturé (promis): Erreur: Impossible de faire correspondre les itinéraires. Segment URL: 'clients' Erreur: Impossible de faire correspondre les itinéraires. Segment URL: 'clients'

Voici mon Router module

import {NgModule} from "@angular/core";
import {Routes, RouterModule} from "@angular/router";
import {AppComponent} from "./app.component";
import {ClientComponent} from "./clients/client.component";
import {ClientDetailsComponent} from "./clients/client-details/client-details.component";
import {ClientListComponent} from "./clients/client-list/client-list.component";

const routes: Routes = [
    {path: '', component: AppComponent},
    {path: 'clients', component: ClientComponent, children: [
        {path: 'list', component: ClientListComponent, outlet: 'client-list'},
        {path: ':id', component: ClientDetailsComponent, outlet: 'client-details'}
    ]
    },
];

@NgModule({
    imports: [RouterModule.forRoot(routes)],
    exports: [RouterModule],
    providers: []
})
export class RoutingModule {
}

App.component

export class AppComponent {
    clientsLoaded = false;

    constructor(private clientService: ClientService,
                private router: Router) {
    }

    loadClientsComponent() {
        this.router.navigate(['/clients', {outlets: {'client-list': ['clients'], 'client-details': ['none'], 'client-accounts-info': ['none']}}]);
        this.clientsLoaded = true;
    }


}

Client.component

import {Component} from "@angular/core";
import {ClientService} from "../services/client.service";
import {Router} from "@angular/router";
import {Client} from "./client-details/model/client.model";
@Component({
    selector: 'clients',
    templateUrl: 'app/clients/client.component.html'
})
export class ClientComponent {
    clients: Array<Client> = [];

    constructor(private clientService: ClientService,
                private router: Router) {
    }
    ngOnInit() {
        this.getClients().subscribe((clients) => {
            this.clients = clients;
        });
    }

    getClients() {
        return this.clientService.getClients();
    }
}

Qu'est-ce qui ne va pas? Je vous serais reconnaissant pour toute l'aide apportée

[~ # ~] met à jour [~ # ~]

Merci pour le conseil, j'ai essayé quelque chose comme ça

const routes: Routes = [
    {path: '', component: AppComponent, pathMatch: 'full'},
    {path: 'clients', component: ClientComponent, children: [
        {path: '', component: ClientComponent},
        {path: 'list', component: ClientListComponent, outlet: 'client-list'},
        {path: ':id', component: ClientDetailsComponent, outlet: 'client-details'}
    ]
    },
];

Mais ça ne marche toujours pas.

Peut-être que je ne le fais pas correctement, mais j'ai le modèle suivant pour mon ClientComponent

<div id="sidebar" class="col-sm-3 client-sidebar">
    <h2 class="sidebar__header">
        Client list
    </h2>
    <div class="sidebar__list">
        <router-outlet name="client-list"></router-outlet>
    </div>
</div>
<div id="client-info" class="col-sm-4 client-info">
    <div class="client-info__section client-info__section--general">
        <router-outlet name="client-details"></router-outlet>
    </div>
</div>

Je souhaite donc que mon composant client conserve tous les composants liés au client. Et si l'utilisateur clique par exemple sur un bouton, une liste de clients est chargée.

21
Ptzhub

Ajouter pathMatch: 'full'

{path: '', component: AppComponent, pathMatch: 'full'},

vers des routes avec un chemin vide '' et pas d'itinéraires enfants.

10
Günter Zöchbauer

J'intègre Angular 2/4 dans une application MVC existante et j'ai eu ce problème aussi.

En utilisant votre exemple, si j’avais path: 'Clients' dans la configuration de routage au lieu de path: 'clients' et a essayé d'accéder à l'URL telle que http://localhost/clients, J'obtiendrais cette erreur.

Les noms de chemin de route sont sensibles à la casse (à partir de maintenant en tout cas). Sinon, ils ne correspondront pas à ce qui se trouve dans votre URL, et avec le nom typique de contrôleur/action MVC, ils sont du type "InitialCaps".

2
bcr

Vérifiez la session d'importation à la app.module.ts et regardez si vous n'avez pas oublié le routage:

imports: [
    BrowserModule,
    APP_ROUTES,
    AppRoutingModule
  ],
0
Jahuso