无法在Angular CLI项目中

时间:2017-05-04 13:35:18

标签: javascript angular angular-cli

我们有一个Angular CLI项目,我们不想动态加载模块(或组件)。我们的版本:

@angular/cli: 1.0.0-rc.1
node: 6.9.4
os: win32 x64 (though target OS is Linux)
@angular/common: 2.4.10
@angular/compiler: 2.4.10
@angular/core: 2.4.10
@angular/forms: 2.4.10
@angular/http: 2.4.10
@angular/platform-browser: 2.4.10
@angular/platform-browser-dynamic: 2.4.10
@angular/router: 3.4.10
@angular/cli: 1.0.0-rc.1
@angular/compiler-cli: 2.4.10

我们有一个根AppModule,它正在加载一个组件DocuRootComponent:

@NgModule({
  declarations: [
    AppComponent,
     DocuRootComponent],
  imports: [
    BrowserModule,
    HttpModule
  ],
  providers: [SystemJsNgModuleLoader],
  bootstrap: [AppComponent, DocuRootComponent]
})
export class AppModule {

  constructor() {}

}

在DocuRootComponent中,我们尝试动态加载我们需要的实际Module DocuModule:

@Component({
  selector: 'app-docu-root',
  templateUrl: './docu-root.component.html',
  styleUrls: ['./docu-root.component.css']
  // entryComponents: [DocuWrapperComponent]
})
export class DocuRootComponent implements OnInit {

  constructor(private loader: SystemJsNgModuleLoader, private compFactoryResolver: ComponentFactoryResolver) {
    console.log('DocuRootComponent.constructor')
  }

  ngOnInit() {

    this.loader.load('../docu/docu.module#DocuModule').then((factory: NgModuleFactory<any>) => {
      console.log(factory);
    });

  }

}

问题是,无论我们尝试什么,它都不会加载。正如您在上面的注释代码中所看到的,我们也尝试使用entryComponents。但是在现在的代码中,我们得到了错误&#34; Uncaught(承诺):错误:找不到模块&#39; ../ docu / docu.module&#39;。错误:找不到模块&#39; ../ docu / docu.module&#39;。&#34;我们也尝试过不同的路径。现在它与DocuRootComponent文件的位置相对应,我们也尝试从&#34; src / app开始......&#34;或&#34; app /...",但似乎没有任何效果。

当我取消注释entryComponents-line时,我收到错误&#34; Unhandled Promise rejection:组件DocuWrapperComponent不是任何NgModule的一部分,或者模块尚未导入到您的模块中。&#34;

DocuModule看起来像这样:

@NgModule({
  imports: [
    CommonModule
  ],
  entryComponents: [DocuWrapperComponent],
  declarations: [DocuWrapperComponent]
})
export class DocuModule { }

我们四处搜索网络,但每个人似乎都在使用&#34; SystemJsNgModuleLoader.load()&#34; (我认为甚至是路由器),但对我们来说似乎没有用,我们也不知道为什么。

0 个答案:

没有答案