BehaviorSubject (в Ionic Project) ведет себя странно после обновления до последней версии Angular (v6 до v7) - PullRequest
0 голосов
/ 28 марта 2019

это действительно сводит меня с ума.

Я проверил очень простой ionic v4 Project с потоком входа в систему .

Демонстрация работала отлично, нотак как этому проекту уже 5 месяцев, я решил создать новый ионный проект с новейшей ионной системой и перевести источник в новый ... с последними стабильными ионными зависимостями.

Но тогдаrxJS-BehaviorSubject (authState $) действует совершенно странно, см. снимок экрана.

Код: https://github.com/meumobi/meu-starter.login-flow.ionic-v4/blob/master/src/app/core/auth/auth.service.ts

Код (я добавил несколько console.logs в метод isAuthenticated ()):

console.log('isAuthenticated: ', this.authState$.getValue());
console.log('isAuthenticated: ', this.authState$);

Консоль:

enter image description here

Итак, что случилось:

Возвращает getValue ()начальное значение, где в качестве напечатанного объекта содержится правильное значение (true).Мне это кажется странным, так как они оба называются сразу после друг друга.

Когда я вернусь обратно к версиям (к исходному package.json), он снова будет работать:

enter image description here

Обновление ионного проекта обновило угловую версию с v6.1 до v7.2 (включая его deps) и TypeScript с 2.9 до 3.1.

RXJS имеетбыло обновлено с 6.2.2 до 6.3.3.

Было бы очень здорово, если бы вы могли рассказать мне, что происходит.

Обновление:

Я мог бы отследить его до одной зависимости, которая вызывает эту проблему.

Последняя работает: "@ ionic / angular": "4.0.0-beta.17" Не работает: что-то выше, чем @ionic/angular@4.0.0-beta.17.

При создании нового ионного проекта он поставляется с 4.1.0.Это означает, что он не может работать с новым проектом.

Большое спасибо заранее,

Саша

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Вы должны сделать это как можно более заметным для подписки данных.Пожалуйста, используйте как это

 public _auth$:Observable<boolean> =this.authState$.asObservable();
 this._auth.subscribe(data=>{console.log(data);
})
0 голосов
/ 28 марта 2019

Попробуйте получить прямой доступ к значению

this.authState$.value
...