首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular CDK Portal从Portal内分离

Angular CDK Portal从Portal内分离
EN

Stack Overflow用户
提问于 2018-07-12 19:04:24
回答 0查看 916关注 0票数 3

我正在使用Angular CDK的门户创建一个错误消息组件,该组件需要在正文中呈现(因此使用门户)。

它工作得很好,尽管对于错误消息本身,我需要能够从组件中关闭它。

我正在使用服务设置门户并打开/隐藏邮件。问题是我不能从错误消息组件本身调用close方法,因为这样我就有了一个循环依赖,它就完全崩溃了。

我知道有了CDK的覆盖,你可以从它的组件中引用它,有没有办法对门户做同样的事情,这样我就可以将门户从错误消息组件中分离出来?

谢谢。

这是服务代码

代码语言:javascript
复制
private errorMessagePortal: ComponentPortal<ErrorMessageComponent>;
private bodyPortalHost: DomPortalHost;

constructor(
  private componentFactoryResolver: ComponentFactoryResolver,
  private appRef: ApplicationRef,
  private injector: Injector
) {
  this.errorMessagePortal = new ComponentPortal(ErrorMessageComponent);
  this.bodyPortalHost = new DomPortalHost(document.body, this.componentFactoryResolver, this.appRef, this.injector);
}

// show error message
showErrorMessage(errorMessage: ErrorMessage) {this.bodyPortalHost.attachComponentPortal(this.errorMessagePortal).instance.errorMessage = errorMessage;
}

closeErrorMessage() {
  this.bodyPortalHost.detach();
}
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51304012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档