我正在使用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();
}https://stackoverflow.com/questions/51304012
复制相似问题