Как то так:
//Service
@Output() change: EventEmitter[];
categoryModalisOpen[] = [];
toggleCreateCategoryModal(key) {
this.categoryModalisOpen[key] = !this.categoryModalisOpen[key];
this.change[key].emit(this.categoryModalisOpen[key]);
}
//BtnComponent
@ViewChild('modalComponentInstance') // # ссылка на компонент нужного модального окна
modalComponentInstance;
constructor(
private CreateCategoryModalService: CreateCategoryModalService
) { }
openCreteCatModal() {
let key = this.modalComponentInstance.key; // Нужно подключить инстанс окна которое должно открываться по текущей кнопке
this.CreateCategoryModalService.toggleCreateCategoryModal(key);
}
//ModalComponent
creatCatIsOpen = false;
key: number;
ngOnInit() {
this.key = this.CreateCategoryModalService.categoryModalisOpen.lenght + 1;
this.CreateCategoryModalService.change[this.key].subscribe(isOpen => {
this.creatCatIsOpen = isOpen;
});
}
constructor(
private CreateCategoryModalService: CreateCategoryModalService
) { }
Код не проверял, только в голове прогнал, наверняка есть какие-нибудь ошибки, но главное что бы вы суть идеи поняли.