it-swarm.com.de

Fehler: Es können keine Routen gefunden werden. URL-Segment:

Ich versuche, diesem Tutorial zu folgen http://onehungrymind.com/named-router-outlets-in-angular-2/ aber ich erhalte den Fehler.

AUSNAHME: Ungefangen (in Versprechen): Fehler: Es können keine Routen gefunden werden. URL-Segment: 'clients' Fehler: Es können keine Routen gefunden werden. URL-Segment: "Kunden"

Hier ist mein 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 {
}

Anwendungskomponente

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();
    }
}

Was kann falsch sein? Für jede Hilfe wäre ich dankbar

[~ # ~] Update [~ # ~]

Danke für den Rat, ich habe so etwas probiert

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'}
    ]
    },
];

Aber es geht immer noch nicht.

Vielleicht mache ich das falsch, aber ich habe die folgende Vorlage für mein 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>

Daher möchte ich, dass meine Client-Komponente alle Client-bezogenen Komponenten behält. Und wenn der Benutzer zum Beispiel auf eine Schaltfläche klickt, wird eine Kundenliste geladen.

21
Ptzhub

Hinzufügen pathMatch: 'full'

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

zu Routen mit leerem Pfad '' und keine untergeordneten Routen.

10

Ich integriere Angular 2/4 in eine bestehende MVC-Anwendung und hatte auch dieses Problem.

Wenn ich in Ihrem Beispiel path: 'Clients' In der Routing-Konfiguration anstelle von path: 'clients' Hätte und versucht hätte, zu einer URL wie http://localhost/clients Zu wechseln, würde ich diese Fehlermeldung erhalten.

Bei den Routenpfaden wird die Groß- und Kleinschreibung beachtet (zum jetzigen Zeitpunkt jedenfalls). Andernfalls stimmen sie nicht mit den Angaben in Ihrer URL überein. Bei der typischen Benennung von MVC-Controllern und -Aktionen haben sie den InitialCaps-Stil.

2
bcr

Überprüfen Sie die Importsitzung unter app.module.ts und sehen Sie, dass Sie das Routing nicht verpasst haben:

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