@NgModule
을 통해 라우트 구성을 설정했습니다. 그리고 특정 조건에 따라 사용자가 표시해야하는 응용 프로그램의 부분을 식별하는 서비스가 있습니다. 그 서비스를 호출하고 반환 된 값에 따라 경로를 설정해야합니다.각도 : 서비스 방법 호출에 따라 경로 설정
문제점 : 라우트 구성이 주석 내부에 설정되어 있으며 이러한 설정에서 서비스 호출 방법을 얻을 수 없습니다.
좀 더 구체적으로 설명하면 다음과 같습니다.
내 현재 라우팅 설정 :
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 {
}
경로 설정을 변경해야합니다 서비스 :
가@Injectable()
export class MyService {
getAccessibleRoutes(): Observable<string[]> {...}
}
는 질문 :가 어떻게 서비스 요청을하고 경로를 변경할 수 있습니다?
참고 : 나는 또한 "Dynamically adding routes in Angular"과 "How we can add new routes dynamically into RouterModule(@NgModule imports)"을 보았지만 확실한 대답을 찾지 못했습니다.
호 I 설정 할'redirectTo'을 라우터 가드? 예를 들어'first-route'가 사용자가 접근 할 수 없다는 것을 알고 있다면'second-route'로 리디렉션을 변경하고 싶습니다. –
업데이트 된 답변을 확인하십시오. 여기서 활성화 조건이 충족되지 않는 경우 Guard의 다른 경로로 리디렉션하는 방법의 예를 찾을 수 있습니다. –
@OleksandrShpota 초기 접근 방식은 인앱 로직을 기반으로하는 경로 구성을 동적으로 변경하는 것 같습니다. 더 정확한 접근법은 전체 라우터 구성을 선행 적으로 정의하고 인앱 데이터를 기반으로 각 경로에 대한 접근성을 제한하기 위해 Route Guards를 사용하는 것입니다. 자세한 내용은 각도 문서를 참조하십시오 https://angular.io/guide/router # canload-guard-guarding-unauthorized-of-feature-modules- – tt9