Задать вопрос
@sdgroup14

Как реализовать Сервис который отвечает только за набор boolean значений Angular 2-5?

Есть много модалок... есть много кнопок.... я делаю связь через сервис... И не хватает навыков чтоб для каждой модалки-кнопки сделать 1 сервис на все. А не для каждой... пример кода ниже аналогичен для каждой модалки. На данном этапе их 5.


//Service

@Output() change: EventEmitter = new EventEmitter();

categoryModalisOpen = false;

toggleCreateCategoryModal() {
this.categoryModalisOpen = !this.categoryModalisOpen;
this.change.emit(this.categoryModalisOpen);
}

//BtnComponent

constructor(
private CreateCategoryModalService: CreateCategoryModalService
) { }

openCreteCatModal() {
this.CreateCategoryModalService.toggleCreateCategoryModal();
}

//ModalComponent

creatCatIsOpen = false;

ngOnInit() {
this.CreateCategoryModalService.change.subscribe(isOpen => {
this.creatCatIsOpen = isOpen;
});
}

constructor(
private CreateCategoryModalService: CreateCategoryModalService
) { }

  • Вопрос задан
  • 118 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
rework
@rework
Помог ответ? В благодарность отметь его решением
Как то так:

//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
) { }


Код не проверял, только в голове прогнал, наверняка есть какие-нибудь ошибки, но главное что бы вы суть идеи поняли.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 17:26
5000 руб./за проект
18 дек. 2024, в 17:23
1500 руб./за проект
18 дек. 2024, в 16:42
2000 руб./за проект