Проблема с настройкой глобальной переменной Angular 4

Я пытаюсь установить глобальную переменную в моем LoginService, чтобы я мог вставить ее в свой DriverService. Однако независимо от того, как я реализую глобальную переменную, она всегда либо undefined, либо пустая строка.

Я сделал плункер, так что вы можете проверить его вживую: PLUNKER

Я пробовал использовать вещи setValue (this.login = value) и getValue (return this.login), теперь попробовал с Subject и BehaviorSubject, но безуспешно.

Как я могу установить глобальную переменную в одной службе, чтобы использовать ее в другой службе?

Спасибо


person Haseoh    schedule 11.06.2017    source источник
comment
вам нужна настоящая глобальная переменная глобального объекта, к которой можно получить доступ в консоли?   -  person Max Koretskyi    schedule 11.06.2017
comment
Не знаю, правильно ли я вас понял, но мне нужна глобальная переменная, значение которой будет доступно в других сервисах. Я использую здесь консоль, чтобы проверить, возвращает ли мой код то, что я хочу.   -  person Haseoh    schedule 11.06.2017
comment
Конструктор DriverService не вызывается в вашем плункере   -  person Max Koretskyi    schedule 11.06.2017
comment
ну, DriverService конструктор все еще не вызывается   -  person Max Koretskyi    schedule 11.06.2017
comment
Гм, как мне позвонить в службу constructor? Я думал, когда я использую DriverService экземпляр, будет вызываться конструктор.   -  person Haseoh    schedule 11.06.2017
comment
да, но на данный момент он, вероятно, не используется, поскольку, если я помещаю отладчик в конструктор, он не приостанавливается   -  person Max Koretskyi    schedule 11.06.2017


Ответы (1)


Что вы должны помнить о службах (Injectables в целом), так это то, что если вам нужен один и тот же экземпляр службы в своем приложении, вам необходимо добавить их в массив providers в вашем NgModule, что сделает один и тот же экземпляр службы доступным для всех. компоненты, которые находятся в этом модуле. В этом случае вы, конечно, хотите именно этого!

Наличие providers-array в каждом компоненте означает, что все ваши компоненты будут иметь собственный экземпляр службы (служб), а это означает, что они вообще не используют одни и те же данные.

Итак, единственное, что нужно было - это удалить массивы providers из компонентов и вместо этого применить их в вашем NgModule :)

Ваш фиксированный PLUNKER.

person AJT82    schedule 11.06.2017