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

  • Вопрос задан
  • 111 просмотров
Решения вопроса 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
) { }


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

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

Войти через TM ID
Похожие вопросы
Spotware Systems Лимассол
от 3 500 eur.
Spotware Systems Лимассол
от 3 500 до 3 800 eur.
Нордкод Санкт-Петербург
от 120 000 до 250 000 руб.