如何为动态创建的组件注入器提供某些组件?角材料,ComponentPortal

时间:2018-09-15 16:47:41

标签: angular angular-material2

我有一些组件(SomeComponent)。通过单击一些按钮,我创建弹出窗口。我通过ComponentPortal创建它。另外,我创建了叠加层并将门户附加到该叠加层上。

代码如下:

const calendarPortal = new ComponentPortal(MyPopupComponent);
const positionStrategy = this.getPositionStrategy(this.getAnchorElement());
const overlayConfig = new OverlayConfig({
  positionStrategy,
  panelClass: 'popup'
});
this.popupRef = this.overlay.create(overlayConfig);
const calendarPopupComponent = this.popupRef.attach(calendarPortal);

是否有可能获得SomeComponent实例?

我通过DI尝试过,但没有成功。

constructor(someComponentRef: SomeComponent) {
  ...
}

我在应用程序启动时有此提示

Can't resolve all parameters for MyPopupComponent: (?).
            Error: Can't resolve all parameters for MyPopupComponent: (?).
    at syntaxError (http://localhost:6006/static/preview.bundle.js:45245:17)

顺便说一句,我在应用程序启动时得到了它。当我尝试创建弹出窗口时不行。太奇怪了。

我在ComponentPortal中找到了喷射器和viewContainerRef输入。我都尝试过,但是没有用。

所以我需要一些方法来获取MyPopupComponent内SomeComponent的实例。我该如何处理?

这里是demo on stackblitz

0 个答案:

没有答案