0

我正在使用以下代码创建动态模板 URL How to use variable to define templateUrl in Angular2,但我需要在模板中使用日期选择器,并且在添加 Angular UI Bootstrap 库(Angular 2 版本)时遇到问题。错误是

“没有 NgbDateParserFormatter 的提供者”

我将 NgbModule 和 FormsModule 添加到导入部分

@NgModule({
    imports: [CommonModule, NgbModule.forRoot(), FormsModule ],
    declarations: [DynamicHtmlComponent]
})

class DynamicHtmlModule {}

我创建了一个 plunker 版本https://plnkr.co/edit/kWoSTi?p=preview 如果文件中的字段日期src/articles/first.html未注释,则应用程序不起作用。

4

2 回答 2

0

我会利用以下方式来完成它:

this.compiler.compileModuleAndAllComponentsAsync(DynamicHtmlModule)
  .then(factory => {
     const moduleRef = factory.ngModuleFactory.create(this.vcRef.parentInjector);

     const compFactory = factory.componentFactories
        .find(x => x.componentType === DynamicHtmlComponent);

     const cmpRef = this.vcRef.createComponent(compFactory, 0, moduleRef.injector);
});

Plunker 示例

注意事项:您可以使用NgbDatepickerModule而不是NgbModule. 它将提高性能Plunker

于 2016-10-17T19:20:40.300 回答
0

您可以通过这种方式导入 NgbDatepickerModule:

@NgModule({
imports: [
    ...
    NgbDatepickerModule.forRoot()
],

这应该修复“NgbDateParserFormatter 没有提供程序”

于 2016-10-27T08:10:39.120 回答