gpt4 book ai didi

Angular CDK 门户从门户内分离

转载 作者:行者123 更新时间:2023-12-04 15:57:23 24 4
gpt4 key购买 nike

我正在使用 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();
}

最佳答案

截至portal API来自 Angular CDK:

this.errorMessagePortal.detach()

应该可以解决问题!

关于Angular CDK 门户从门户内分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51304012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com