Dưới đây là ví dụ về cách tôi xử lý định tuyến của mình với các tuyến con. Tôi nghĩ điều này sẽ giúp bạn và dạy bạn sử dụng lộ trình con để cung cấp Guard
cho một số thành phần của bạn. Điều này sẽ đảm bảo một số lượt xem nếu người dùng thiếu xác thực. Tôi tách riêng của tôi trong public
và secure
định tuyến mọi thứ thông qua bố cục, sau đó tải tuyến đường cho từng bố cục được chọn.
Đảm bảo xuất tuyến đường dành cho trẻ em và các tuyến đường chính xác được gọi trong tuyến bố trí. Ngoài ra, hãy đảm bảo bạn sử dụng redirectTo
trong mỗi tệp tuyến đường dành cho trẻ em.
Chúng tôi đang xác định bố cục của mình công khai hoặc bảo mật. Sau đó cung cấp các tệp tuyến đường trong mỗi thư mục đó để tiếp nhận khi tuyến đường tạo được chọn.
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 }
];
Sau đó, tôi có một thư mục layouts
bố trí
layouts/public/public.components.ts
layouts/public/public.components.html
layouts/secure/secure.components.ts
layouts/secure/secure.components.html
secure.component.ts đó là cách bố trí trông như thế này,
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 { }
}
Sau đó, trong thư mục an toàn của bạn, bạn có thể tạo ra một thành phần và chọn mẫu bạn sẽ sử dụng cho nó,
@Component({
providers: [ Auth ],
templateUrl: './profile.component.html'
})
export class ProfileComponent implements OnInit {
constructor(private router: Router, private auth: Auth, private http: Http ) { }
ngOnInit() { }
}
Bây giờ hãy chắc chắn để tạo các tuyến trẻ của bạn trong thư mục an toàn và công cộng. Khi tuyến đường được nhấn vào tuyến đường con sẽ tải lớp và tệp mẫu chính xác sẽ được hiển thị.
Hãy nhớ rằng chúng sẽ là con của bố cục của bạn. Vì vậy, bạn có thể đặt thanh điều hướng và chân trang trong secure.component.html và nó sẽ hiển thị trong tất cả các thành phần bảo mật của bạn. Bởi vì chúng tôi đang sử dụng bộ chọn để tải nội dung. Tất cả các thành phần của bạn an toàn và công khai sẽ được tải vào selctory bên trong các tệp bố cục html
.
tuyến đường trẻ em /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 }
];
Tóm tắt
Chúng tôi đã thiết lập một tập tin rout ban đầu trong thư mục gốc của ứng dụng Angular2
của chúng tôi. Tệp tuyến đường này hướng lưu lượng truy cập đến một trong hai bố cục tùy thuộc vào việc người dùng có được xác thực hay không. Nếu họ có xác thực cho bất kỳ bố cục công khai tuyến đường hoặc bố cục an toàn nào được phân phát. Sau đó, mỗi bố trí có một loạt các tuyến đường con và các thành phần được phục vụ cho bố trí tương ứng.
Vì vậy, để xóa các tập tin cấu trúc lên,
root =/
Bạn tuyến ứng dụng chính mà kiểm soát bố trí được xem.
/app.routing.ts
Bố cục giữ bố cục an toàn hoặc công khai.
Công
`/layouts/public.components.ts
/layouts/public.components.html
/layouts/public.routing.ts`
an toàn
`/layouts/secure.components.ts
/layouts/secure.components.html
/layouts/secure.routing.ts`
thư mục nào đó nắm giữ bất cứ điều gì đó là mở cửa cho xem mà không auth.
/public/home-component.ts
/public/home-component.html
Thư mục an toàn chứa các tuyến đường và thành phần cần thiết.
/public/profile-component.ts
/public/profile-component.html
https://angular.io/docs/ts/latest/guide/router.html –
Tôi đã nhìn thấy các tài liệu. Tôi không tìm thấy những gì tôi thấy ở đó rất thỏa mãn cho mục đích này. –
Ngay cả phần họ đã đề cập cách chúng tôi có thể có một tệp định tuyến riêng cho từng mô-đun? Tôi nghĩ bạn có thể tìm kiếm 'Chúng tôi khuyên bạn nên cung cấp cho mỗi đối tượng địa lý một tệp cấu hình tuyến đường riêng.' trong trang tài liệu đó và tiếp tục từ phần đó. –