당신은 선언 배열의 두 구성 요소가됩니다 generic.module.ts을 만들 수 있습니다 Resolve
에서 리디렉션을 수행하는 방법을 보여줍니다 공식 예입니다 https://angular.io/docs/ts/latest/api/router/index/Resolve-interface.html
:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UserDashboardComponent } from './user-dashboard.component'
import { AdminDashboardComponent } from './admin-dashboard.component
@NgModule({
imports: [ BrowserModule ],
declarations: [ UserDashboardComponent,AdminDashboardComponent ]
})
export class GenericModule { }
이렇게하면로드하려는 모듈을 포함하게됩니다. 다음을 수행하여 구성 요소 내부 :
이제 다음 단계는 컴파일러를 사용하여 비동기를로드하는 것입니다
import {GenericModule} from './generic.module';
import { Component, Input,ViewContainerRef, Compiler, NgModule,ModuleWithComponentFactories,OnInit,ViewChild} from '@angular/core';
@Component({
selector: 'generic',
template: '<div #target></div>'
})
export class App implements AfterViewInit {
@ViewChild('target', {read: ViewContainerRef}) target: ViewContainerRef;
constructor(private compiler: Compiler) {}
ngAfterViewInit() {
this.createComponent('<u>Example template...</u>');
}
private createComponent(template: string,role:string) {
@Component({template: template});
const mod = this.compiler.compileModuleAndAllComponentsSync(GenericModule);
const factory = mod.componentFactories.find((comp) =>
//you can add your comparison condition here to load the component
//for eg. comp.selector===role where role='admin'
);
const component = this.target.createComponent(factory);
}
}
희망이 도움이됩니다.
(https://angular.io/docs/ts/latest/guide/router를 [여기].html) 및 "Lazy-Loading 라우트 구성"을 검색하십시오. – cvsguimaraes
게으른 로딩이 도움이되지 않습니다. @ user32 대답에 대한 내 의견을 참조하십시오. –
당신이 그것을 알아 냈습니까? – Dmitry