Вы можете сделать это sh только несколькими способами. Если вы пытаетесь выполнить код внутри компонента из другого компонента, вы должны получить ссылку на указанный компонент. Затем вы можете получить доступ к свойствам / методам publi c с помощью ComponentRef<Component>.instance
.
. Я бы порекомендовал переместить ваш диалог (модальный) в DialogService
, чтобы вы могли легко вызывать любую диалоговую форму. компонент, который вы будете sh. Поскольку mdbootstrap
не поставляется с предварительно упакованным из коробки диалоговым окном, вам, вероятно, придется создать BootStrapModalComponent
, и в вашем сервисе вставить диалоговое окно динамически, используя ComponentFactory
Пример :
const componentFactory = ComponentFactoryResolver.resolveComponentFactory(MyBootstrapModalComponent);
ViewContainerRef.createComponent(componentFactory);
Тогда в вашей службе у вас будет logi c для запуска процесса создания компонента, когда они вызывают dialogOpen
или что-то в этом роде. Когда они вызывают dialogClose
, вы запускаете аналогичную логику c, которая разрушает диалоговое окно.
IMO, способ, которым команда Angular Material сделала MatDialog
/ MatDialog
`, намного чище. Они предоставляют CDK, который вы могли бы использовать, чтобы сделать свои bootstrap модалы более универсальными c.
Другой вариант - выбрать маршрут для бедняков и создать DialogService
, который просто имеет EventEmitter
. Этот EventEmitter
может быть одноэлементным сервисом, который совместно используется компонентами для передачи ваших событий открытия / закрытия между любыми компонентами. Хотя это будет работать без проблем, это не так элегантно.