Угловой портал CDK Отделение изнутри портала
Я использую портал 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();
}
0 ответов
2019-01-25 10:38