我正在使用Angular CDK的门户创建一个错误消息组件,需要在其他所有内容中呈现在主体中(因此使用门户网站) .

它工作得很好,但在错误消息本身我需要能够从组件内关闭它 .

我正在使用服务来设置门户并打开/隐藏消息 . 问题是我不能从错误消息组件本身中调用close方法,因为那时我有一个循环依赖,它都会崩溃 .

我知道CDK的叠加层你可以从它的组件中引用它,有没有办法对门户网站做同样的事情所以我可以从错误消息组件中分离门户网站?

谢谢 .

这是服务代码

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();
}