Tôi đã thiết lập cấu hình tuyến đường qua @NgModule
. Và tôi có một dịch vụ xác định những phần nào của ứng dụng sẽ được hiển thị cho người dùng tùy thuộc vào một số điều kiện nhất định. Tôi cần phải gọi dịch vụ đó và thiết lập các tuyến đường theo giá trị trả lại.Góc: Thiết lập các tuyến đường tùy thuộc vào phương thức dịch vụ gọi
Sự cố: Cấu hình tuyến đường được thiết lập bên trong chú thích và tôi không thể biết cách gọi dịch vụ trong thiết lập như vậy.
Để cụ thể hơn ở đây là cấu hình mẫu tôi muốn nâng cao.
hiện tại của tôi thiết lập định tuyến:
const appRoutes: Routes = [
{
path: '',
redirectTo: 'first-route',
pathMatch: 'full'
},
{
path: 'first-route',
component: FirstComponent,
pathMatch: 'full'
},
{
path: 'second-route',
component: SecondComponent,
pathMatch: 'full'
},
...
];
@NgModule({
imports: [RouterModule.forChild(appRoutes)],
exports: [RouterModule]
})
export class MyRoutingModule {
}
Các dịch vụ mà nên thay đổi thiết lập tuyến đường:
@Injectable()
export class MyService {
getAccessibleRoutes(): Observable<string[]> {...}
}
Câu hỏi: Làm thế nào tôi có thể thực hiện cuộc gọi dịch vụ và thay đổi tuyến đường?
Lưu ý: Tôi cũng đã xem "Dynamically adding routes in Angular" và "How we can add new routes dynamically into RouterModule(@NgModule imports)" nhưng tôi chưa tìm thấy câu trả lời rõ ràng ở đó.
Hồ làm tôi đặt 'redirectTo' với lính gác router? Ví dụ: Nếu tôi biết rằng 'tuyến đầu tiên' không thể truy cập được đối với người dùng, tôi muốn thay đổi chuyển hướng sang' tuyến đường thứ hai'. –
Vui lòng kiểm tra câu trả lời cập nhật. Ở đây bạn sẽ tìm thấy một ví dụ về cách chuyển hướng đến một tuyến đường khác để bảo vệ nếu điều kiện kích hoạt của bạn không đáp ứng được –
@OleksandrShpota Có vẻ như trong câu hỏi của bạn, cách tiếp cận ban đầu của bạn là tự động thay đổi cấu hình tuyến đường dựa trên logic trong ứng dụng. Tôi sẽ đồng ý với Taras ở đây rằng phương pháp tiếp cận chính xác hơn là xác định toàn bộ cấu hình bộ định tuyến của bạn và sử dụng Tuyến bảo vệ để hạn chế khả năng truy cập vào từng tuyến đường dựa trên dữ liệu trong ứng dụng. Xem tài liệu Góc để biết thêm thông tin https://angular.io/guide/router # canload-guard-guarding -author-loading-of-feature-modules – tt9