Невозможно получить и установить значение BehaviorSubject в angular - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь добавить логическое значение в BehaviorSubject. Тем не менее, когда я пытаюсь консоль журнала, он говорит, что он не определен. Что я делаю не так?

Вот как я это объявляю.

isDesktopWidth: BehaviorSubject<boolean>;

И вот как я это использую

changeSideBarWidth() {
if (this.innerWidth > 767) {
  this.isDesktopWidth.next(true);
} else {
  this.isDesktopWidth.next(false);
}

}

А потом в ngOnInit

this.changeSideBarWidth();
console.log(this.isDesktopWidth.value);

Но в консоли ничего не отображается. Только ошибка, сообщающая, что

Невозможно прочитать свойство 'next' из неопределенного

1 Ответ

1 голос
/ 20 марта 2020

Вы назначили тип переменной isDesktopWidth, но не инициализировали ее. Попробуйте

isDesktopWidth = new BehaviorSubject<boolean>(false);

BehaviorSubject необходимо инициализировать значением. Если вы хотите sh создать без инициализатора, используйте Subject. В этом случае вы можете использовать

isDesktopWidth = new Subject<boolean>();

Другое различие между ними заключается в том, что BehaviorSubject содержит значение. Таким образом, он вернет текущее значение, которое он содержит, как только вы подпишитесь на него. Subject не содержит текущего значения. Когда вы подписываетесь на него, вы не получите значение, пока оно не выдаст следующее.

Использование свойства .value для невыполненного Subject вернет undefined.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...