点击事件

时间:2016-01-11 09:28:11

标签: angular

我的方案如下: 我有3个组件:MainComponent,ComponentA,ComponentB

MainComponent是动态加载ComponentA。 ComponentA有一个按钮,onClick调用MainComponent.addComponent(ComponentB)

export class MainLayout
  {
    constructor(private dcl: DynamicComponentLoader,private elementRef:ElementRef) {
    ///this will work fine
    this.dcl.loadIntoLocation(ComponentA,elementRef);
    }


    addComponent(component:Type) {
     ///this will fail 
      this.dcl.loadIntoLocation(component, this.elememtRef,'child1');
    }
}

我得到的错误: 您可以看到错误来自elementRef对象....

  

Uncaught EXCEPTION:评估“点击”时出错   原始异常:TypeError:无法读取undefined的属性'_view'   原装STACKTRACE:   TypeError:无法读取undefined的属性'_view'       at Object.internalView(http://localhost:63342/decisionApp/decision-modeling-ui/node_modules/angular2/bundles/angular2.dev.js:6236:19)       在AppViewManager_.getNamedElementInComponentView(http://localhost:63342/decisionApp/decision-modeling-ui/node_modules/angular2/bundles/angular2.dev.js:11240:33)       在DynamicComponentLoader_.loadIntoLocation(http://localhost:63342/decisionApp/decision-modeling-ui/node_modules/angular2/bundles/angular2.dev.js:14547:62)       在MainLayout.resolveComponent(http://localhost:63342/decisionApp/decision-modeling-ui/app/playground/ui-composition/mainLayout.js:32:18)       在ComponentsList.onClick(http://localhost:63342/decisionApp/decision-modeling-ui/app/playground/ui-composition/ComponentsList.js:25:20

2 个答案:

答案 0 :(得分:0)

您的描述不是很清楚,因为您没有告诉我们有关您组件的失败消息和其他一些事情。所以我只能猜测:

组件,this.elememtRef,' child1'在调用addComponent时不存在,因此它会失败?也许ComponentA尚未完全加载? 我还假设"组件"是指ComponentB?

答案 1 :(得分:0)

好的,我想通了, 我有不同objectRefs的原因是我在ComponenetA配置中设置了一个provider:[MainComponent]。 这为我创建了一个MainComponent的新实例。 因此,在构造函数中注入了一个新的ElementRef实例。