2017-12-19 19 views
1

내가 달성하고자하는 것은 내 AppRoutingModule을 실제 애플리케이션 경로 목록을 알지 못하게 만드는 것입니다.Angular RouterModule을 .forRoot()로 가져 오지 않고 사용할 수 있습니까?

forRoot 호출 경로 목록을 필요로하며, 샘플은이 방법을 사용

@NgModule({ 
    imports: [RouterModule.forRoot(myRoutes)], 
    exports: [RouterModule] 
}) 
export class AppRoutingModule { 
} 

그것은 myRoutes 알고 있어야 AppRoutingModule을 강제로. 하지만 그 반대가되어야하고, 내가 필요로하는 것은 appRoutingModule.AddRoutes(myRoutes)과 같은 응용 프로그램 모듈에서 내 라우팅을 초기화하는 것입니다.

RouterModule을 가져 오기 순간이 아니라 나중에 메소드 호출을 통해 초기화 할 수 있습니까? 메서드에서 forRoot을 호출하려고 시도했지만 imports 문이 아니라면 오류가 발생하여 실패했습니다.

답변

0

가져 오기 순간이 아닌 이지만 나중에 메서드 호출을 통해 RouterModule을 초기화 할 수 있습니까?

아니요, 불가능합니다. Angular는 모듈을 컴파일 할 때 정의 된 모든 제공자를 병합합니다. Avoiding common confusions with modules in Angular에서 자세히 읽으십시오. forRoot 메서드가 RouterModule 인 경우 Location, UrlSerializer, RouterPreloader 등과 같이 많은 응용 프로그램 수준 공급자를 실제로 정의합니다. 이러한 공급자는 모듈을 시작하기 전에 컴파일해야합니다.

내 AppRoutingModule이 실제 응용 프로그램 경로 목록을 인식하지 못하게 만듭니다.

그렇다면 RouterModuleAppRoutingModule을 연결하는 중개 모듈을 만들어보십시오.

+1

설명해 주셔서 감사합니다! 나는'AppRoutingModule' 대신에'import : [RouterModule.forRoot (myRoutes)]'를 주 응용 프로그램 모듈에 넣었고 곧바로 작동했습니다. –

+0

@IvanZverev, 기꺼이 도와 드리겠습니다. 행운을 빕니다 –