2017-11-29 12 views
0

사용자 정의를 위해 일부 구성을 전달할 수있는 일반 모듈을 빌드하려고합니다. 예를 들어, 루트 모듈에서 나는 configx 개체를 기반으로 구축 될 것이다 경로로 모듈을 반환합니다다른 NgModule을 다른 설정으로 다시 사용하기

@NgModule({ 
    imports: [ 
     moduleFactory(config1), 
     moduleFactory(config2), 
     moduleFactory(config3) 
    ], 
}) 
export class AppModule { } 

moduleFactory 같은 것을 갖고 싶어. 이러한 모듈은 구성 개체를 기반으로 사용자 지정된 콘텐츠를 표시하는 일부보기를 제공합니다. 어떻게해야합니까?

+0

'ModuleWithProviders'를 사용하는 방법이 있지만,'moduleFactory'에 런타임 실행이 필요한 로직을 넣으면 AOT와 작동하지 않습니다 –

+0

@ AngularInDepth.com 제가 겪고있는 주요 문제는 AOT. 이제 라우트를 정의하는 메인'NgModule' 만 있고 라우트 구성 배열에서 라우트 객체 설정을 리턴하는 함수를 호출하고'ng serve'를 실행할 때 오류가 있습니다 : 심볼 값을 정적으로 해석하는 중 오류가 발생했습니다. 'admin'함수를 호출하면 함수 호출이 지원되지 않습니다. 코드를 적게 사용하는 것이 AOT를 포기할만한 가치가 있습니까? 나는 AOT를 잘 이해하지 못하고 그것을 사용하는 이점을 모른다. – csbenjamin

+0

예, 정적 분석은 코드를 평가하지 않습니다. 아니, AOT를 포기할 가치가 없다. 컴파일러는 AOT와 함께 제공되지 않는 브라우저에 제공되는 Angular 코드의 약 40 %를 차지하며 사전 컴파일 된 구성 요소를 사용하면 시작 시간도 단축됩니다. –

답변

0

나는 loadChildren을 사용하여 해결책을 찾았습니다.

{ 
    path:'companies', 
    loadChildren: 'app/admin/admin.module#AdminModule', 
    data:{ 
     // the config1 
    } 
}, 

{ 
    path:'users', 
    loadChildren: 'app/admin/admin.module#AdminModule', 
    data:{ 
     // the config2 
    } 
} 

다음, AdminModule에서 나는 data 속성을 읽을 수 있습니다 : 주요 경로 설정에서 나는 이런 식으로 뭔가가있다. 게다가 AdminModule 경로에 절대 경로 경로를 정의하려고 시도했지만 이제는 loadChildren 솔루션으로 상대 경로를 정의 할 수 있으므로 정적으로 정의 된 경로를 가질 수 있으며 AOT는 작동합니다. 내가 경로 /users 및 경로 /users/item;id=1와 특정 사용자와 사용자 테이블을로드 할 수 있습니다, 그와

{ 
    path: '', 
    component: TablePageComponent, 
}, 
{ 
    path: 'item', 
    component: FormPageComponent, 
} 

: 나는 AdminModule 경로에서이 같은 있습니다. 회사와 그 밖의 모든 것에도 동일하게 적용됩니다.