找不到组件的组件工厂

时间:2017-01-10 10:51:07

标签: javascript angular angular-cli

我知道已经提出了很多类似的问题,而且我现在已经搜索了很长一段时间来尝试所有可能的解决方案,但它仍然无法正常工作。大多数解决方案都涉及添加entryComponent或将其添加到组件本身的entryComponent (不良做法),但两者都没有帮助。

所以我一直试图植入与此相同的技术:plunkr

我的代码:

app.module.ts

@NgModule({
  declarations: [
    AppComponent,
    ****
    ArtworkWrapperComponent, 
    TestComponent
  ],
  imports: [
    ***
  ],
  entryComponents: [TestComponent],
  providers: [Animations, PageNameService],
  bootstrap: [AppComponent]
})
export class AppModule { }

所以TestComponent是我试图根据输入值显示的内容,这是由与Plunkr示例中的DclWrapper相同的类处理的。

我在这个项目中使用Angular CLI(可能是相关的):

angular-cli: 1.0.0-beta.24
node: 6.2.1
os: darwin x64
@angular/common: 2.4.1
@angular/compiler: 2.4.1
@angular/core: 2.4.1
@angular/forms: 2.4.1
@angular/http: 2.4.1
@angular/platform-browser: 2.4.1
@angular/platform-browser-dynamic: 2.4.1
@angular/router: 3.4.1
@angular/compiler-cli: 2.4.1

更新

好的,所以我弄清楚我做错了什么,我误读了Plunkr的例子,它已经把组件放在一个数组中,是否可以根据字符串解析组件?像这样:Plunkr

让它像这样工作,但想知道是否有更整洁的解决方案:

var artwork = null;

        switch(this.type) {
            case 'Test1Component':
                artwork = Test1Component;
                break;
            case 'Test2Component':
                artwork = Test2Component;
                break;
        }

        if(artwork) {
            let factory = this.componentFactoryResolver.resolveComponentFactory(artwork);
            this.cmpRef = this.target.createComponent(factory)
        }

0 个答案:

没有答案