Angular 2 Global Variable для нескольких экземпляров компонентов

У меня есть два компонента на одной странице: Компонент1 и Компонент2. Внутри каждого из них находится Component3. Очевидно, что каждый Компонент 3 является его собственной реализацией компонента. Тем не менее, я хотел бы глобальную переменную между ними. Я создаю параллельное сравнение некоторых данных и хотел бы, чтобы аккордеон работал, поэтому, когда я нажимаю, чтобы развернуть аккордеон на одном Компоненте 3, открывается и другой. Я искал часы и не могу найти решение этой проблемы.

То, что я хочу, например:

(click) = "changeGlobalVar()"

изменить глобальную переменную. Тогда я хотел бы иметь

*ngIf="globalVar"

Таким образом,ngIf работает на обоих компонентах 3, независимо от того, на какой из них я нажимаю.

Может ли кто-нибудь помочь мне? Я искал ответ на это часами.

Вот как выглядит мой сервисный код, но, похоже, он не работает:

import {Injectable} from '@angular/core';

@Injectable()
export class DropDownService {

  public _acDropDownToggle: boolean;

  setValue(val) {
    this._acDropDownToggle = val;
  }

  getValue() {
    return this._acDropDownToggle;
  }

}
 Chris Stanley16 июл. 2016 г., 00:11
Когда я использую сервис, кажется, что это не та же самая переменная. Я обновлю свой вопрос с моим кодом в моем сервисе.
 Mark Rajcok16 июл. 2016 г., 00:43
Вы, вероятно, предоставляете свой DropDownService в нескольких местах, следовательно, вы получаете несколько экземпляров своего сервиса (в Angular 2 сервисы не обязательно являются одиночными). Попробуйте только поместить DropDownService вproviders массив в компоненте, который находится над Component1 и Component2. Затем каждый экземпляр Component3 должен получить ссылку на один и тот же / единственный экземпляр вашего сервиса.
 reptilicus16 июл. 2016 г., 00:10
Использоватьservice и ввести его в компоненты. Они одиночные, поэтому значение будет одинаковым для всех компонентов.

Ответы на вопрос(0)

Ваш ответ на вопрос