Winkel-4 - Aktivierten Route mit param
Habe ich eine Listenseite und eine Detailseite. Die Auswahl einer Option aus der Liste Seite Weg zu der Seite mit den details.
routing-Modul:
const itemRoutes: Routes = [
{ path: 'item', component: ItemListComponent},
{ path: 'item/:id', component: ItemDetailComponent }
];
list-Komponente:
constructor( private route: ActivatedRoute, private router: Router) {}
goToDetail(item) {
this.router.navigate(['item'], {id: item.id});
}
Problem:
Auswählen eines Elements geht um diese url:
http://localhost:3000/item/2
Aber der browser zeigt Fehler "Nicht gefunden".
Auf der Konsole, ich sehe dies:
:3000/item/2:1 GET http://localhost:3000/item/2 404 (Not Found)
Navigated to http://localhost:3000/item/2
Was mache ich falsch?
Sollte es nicht
Immer noch mit dem gleichen Problem - "Nicht gefunden".
Tun Sie aktualisieren Sie die Seite nach der navigation, oder willst du nur navigieren?
this.router.navigate(['item', item.id])
?Immer noch mit dem gleichen Problem - "Nicht gefunden".
Tun Sie aktualisieren Sie die Seite nach der navigation, oder willst du nur navigieren?
InformationsquelleAutor Jay | 2017-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das Problem war, dass ich diese auf der html-Code für die Seite der Liste:
Ich es geändert:
und entfernt diese aus der Komponente:
Dieser gearbeitet!
InformationsquelleAutor Jay
Ihre Routen sind gut definiert. Aber Sie haben 3 Grundlagen Möglichkeiten der Umleitung: href, routerLink und router.navigieren Sie.
Die klassische href-Eigenschaft in einem HTML-Anker-tag
Dieser ist außerhalb Winkel-Steuerung. In der Vorlage (html-Datei) Ihre Element Liste Komponente, die Sie hinzufügen könnte, die einfache html-Anker-tag:
Aber, denn auf diese Weise wird außerhalb der Winkel-Steuerelement verwenden, sollten Sie diese Lösung vielleicht für außerhalb perdurable statische urls. Wie eine Google-Seite, Facebook-Seite, etc..
Also, in diesem Szenario: Der Benutzer interagiert mit Ihrem DOM und Ihrem DOM wird ein Ereignis ausgelöst Herstellung Ihrer browser umleiten.
Mit routerLink Attribut
Diese Lösung erfordert die RouterModule importiert, die in irgendeiner Weise an den tatsächlichen ngModule zu arbeiten. Die einfachste Möglichkeit, um dies zu tun, in Ihrem Haupt-Modul (Allgemein app.- Modul.ts) sollten Sie brauchen, um hinzuzufügen:
Und fügen Sie RouterModule innerhalb der Importe array in Ihrem @NgModule Dekorateur.
Dann in der Vorlage Ihrer ItemListComponent, könnten Sie den Verweis auf ein statischen Pfad, oder generieren eine dynamisch.
Verweisen Sie einen statischen Pfad ein, Sie müssen nur noch die routerLink Attribut mit Ihrem Pfad als Wert:
Hinweis:
<...></...>
bedeutet, dass das tag, das Sie verwenden, spielt überhaupt keine Rolle, wenn seine gerendert in Ihre Seite ein.Zum Verweis auf eine generierte link, zum Beispiel
model/item/4
zu können, müssen Sie die routerLink Attribut als Eingang (Zwischen[]
), und einer Vielzahl von Pfad-Segmente, die enthält jedes segment in einer sequencial Reihenfolge:Wird Element eine barrierearm Objekt auf Ihre Vorlage (public Variablen innerhalb der Klasse Komponente ODER eine deklarierte variable in der Vorlage wie mit
*ngFor="let item of items"
) mit einem id als Eigenschaft.Hinweis: Man könnte das vereinfachen, dass link mit
[routerLink]="['/model/item', item.id]"
, weil/model/item
ist statische in der url.Also, in diesem Szenario: Der Benutzer interagiert mit Ihrem DOM, Ihren DOM nennen die RouterModule, und diese Letzte wird Ende der Suche, für ein Spiel innerhalb Ihrer Routen machen Winkel umleiten.
Mit der Methode navigieren Sie von der Router-Klasse.
Diese Lösung nachholen erfordert die Router importiert und injiziert in der Komponente, die Sie behandeln möchten, die route (ItemListComponent in diesem Fall - ItemList.Komponente.ts - Datei).
Importieren der Router, fügen Sie diese:
Um es zu injizieren; fügen Sie die Konstruktor:
Fügen Sie dann die Methode, die Sie behandeln möchten die Umleitung Ihrer Klasse, wie die, die Sie Hinzugefügt:
Und schließlich sollten Sie hinzufügen müssen, um in Ihrem Vorlage eine Veranstaltung, die die Funktion aufrufen. Zum Beispiel:
Also, in diesem Szenario: Der Benutzer interagiert mit Ihrem DOM, Ihren DOM feuert ein Ereignis, das ausgelöst wird, eine Methode der Klasse, die die Methode aufrufen navigieren von Router - Klasse, die Ende Suche endlich für ein match innerhalb Ihrer Routen machen Winkel umleiten.
InformationsquelleAutor Francute
Gibt es drei verschiedene Arten von Parametern, die Sie verwenden können, mit Eckig:
required
,optional
, undquery
Parameter.Für die Verwaltung von ids auf eine detail-Seite, wie Sie in Ihrem Beispiel, werden Sie wahrscheinlich verwenden wollen
required
Parameter.Ihre Konfiguration für
required
Parameter korrekt ist.Aber die navigation zum parameter über die
optional
- parameter-syntax.Ändern:
Required
müssen Parameter definiert werden, die innerhalb des Arrays.Für eine detaillierte Diskussion der drei verschiedenen Arten von Parametern, Lesen Sie in diesem Pluralsight-Kurs: https://app.pluralsight.com/library/courses/angular-routing
Kannst du mehr von deinem code?
InformationsquelleAutor DeborahK
bitte versuchen Sie dieses:
diese.router.navigieren(['Punkt'+item.id]);
InformationsquelleAutor Kinnera Reddy