ist ein Beispiel dafür, wie ich meine Route mit Kind Routen behandeln. Ich denke, das wird Ihnen helfen und Ihnen beibringen, Kinderrouten zu verwenden, um für einige Ihrer Komponenten Guard
bereitzustellen. Dadurch werden einige Ansichten gesichert, wenn dem Benutzer die Authentifizierung fehlt. Ich teile meine in public
und secure
Routing alles durch das Layout dann Laden der Routen für welche Layout gewählt wird.
Achten Sie auf die Kinder Routen exportieren und dass die richtigen Routen werden in der Layout-Route genannt. Stellen Sie außerdem sicher, dass Sie redirectTo
in jeder untergeordneten Routen-Datei verwenden.
Wir definieren unsere Layouts öffentlich oder sicher. Dann wird die Routes-Datei in jedem dieser Verzeichnisse bereitgestellt, um sie zu übernehmen, sobald die Create-Route ausgewählt wurde.
app.routing.ts
const APP_ROUTES: Routes = [
{ path: '', redirectTo: '/home', pathMatch: 'full', },
{ path: '', component: PublicComponent, data: { title: 'Public Views' }, children: PUBLIC_ROUTES },
{ path: '', component: SecureComponent, canActivate: [Guard], data: { title: 'Secure Views' }, children: SECURE_ROUTES }
];
Dann habe ich einen Ordner Layouts
Layouts
layouts/public/public.components.ts
layouts/public/public.components.html
layouts/secure/secure.components.ts
layouts/secure/secure.components.html
secure.component.ts, die das Layout wie folgt aussieht ist,
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Auth } from './../services/auth.service';
@Component({
providers: [ Auth ],
selector: 'app-dashboard',
templateUrl: './secure.component.html'
})
export class SecureComponent implements OnInit {
constructor(private router: Router, private auth: Auth) { }
ngOnInit(): void { }
}
Dann in Ihrem sicheren Verzeichnis können Sie eine Komponente erstellen und die Vorlage auswählen, die Sie dafür verwenden werden,
@Component({
providers: [ Auth ],
templateUrl: './profile.component.html'
})
export class ProfileComponent implements OnInit {
constructor(private router: Router, private auth: Auth, private http: Http ) { }
ngOnInit() { }
}
nun sicherstellen, dass Ihr Kind Routen in dem sicheren und öffentlichen Verzeichnis zu erstellen. Sobald die Route erreicht ist, lädt die untergeordnete Route die richtige Klasse, und die Vorlagendatei wird gerendert.
Denken Sie daran, sie werden Kinder Ihrer Layouts sein. Sie können also in secure.component.html eine Navigationsleiste und Fußzeile einfügen, die in allen Ihren sicheren Komponenten angezeigt wird. Weil wir Selektoren verwenden, um den Inhalt zu laden. Alle Ihre Komponenten sicher und öffentlich werden in die Datei html
Layouts geladen.
Kind Routen /public/piublic.routes.ts
export const PUBLIC_ROUTES: Routes = [
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{ path: 'p404', component: p404Component },
{ path: 'e500', component: e500Component },
{ path: 'login', component: LoginComponent },
{ path: 'register', component: RegisterComponent },
{ path: 'home', component: HomeComponent }
];
/secure/secure.routes.ts
export const SECURE_ROUTES: Routes = [
{ path: '', redirectTo: 'overview', pathMatch: 'full' },
{ path: 'items', component: ItemsComponent },
{ path: 'overview', component: OverviewComponent },
{ path: 'profile', component: ProfileComponent },
{ path: 'reports', component: ReportsComponent }
];
Zusammenfassung
Wir haben Setup eine anfängliche Router-Datei im Stammverzeichnis unserer Angular2
App. Diese Routendatei leitet den Datenverkehr an eines von zwei Layouts weiter, abhängig davon, ob der Benutzer authentifiziert ist oder nicht. Wenn sie die Authentifizierung für die Route haben, für die ein öffentliches Layout oder ein sicheres Layout bereitgestellt wird. Jedes dieser Layouts enthält dann eine Reihe von untergeordneten Routen und Komponenten, die an das jeweilige Layout geliefert werden.
So die Dateistruktur zu klären,
root =/
Sie Haupt-App Routen, die steuern, welche das Layout angezeigt wird.
/app.routing.ts
Layouts, die halten die Layouts sicher oder öffentlich.
öffentliches
`/layouts/public.components.ts
/layouts/public.components.html
/layouts/public.routing.ts`
Sicheres
`/layouts/secure.components.ts
/layouts/secure.components.html
/layouts/secure.routing.ts`
öffentliches Verzeichnis, das alles enthält, die ohne Auth anzuzeigen offen ist.
/public/home-component.ts
/public/home-component.html
Sicheres Verzeichnis, das die Auth benötigte Routen und Komponenten enthält.
/public/profile-component.ts
/public/profile-component.html
https://angular.io/docs/ts/latest/guide/router.html –
Ich habe die Dokumentation gesehen. Ich fand nicht, was ich dort sah, sehr befriedigend für diesen Zweck. –
Nicht einmal der Teil erwähnt, wie wir eine separate Routing-Datei für jedes Modul haben können? Ich denke, Sie können nach "Wir empfehlen, jedem Funktionsbereich eine eigene Routenkonfigurationsdatei zu geben." in dieser Doc-Seite und fortfahren von diesem Teil. –