BehaviorSubject (в Ionic Project) ведет себя странно после обновления до последней версии Angular (с v6 по v7)

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

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

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

Но тогда 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$);

Консоль:

введите здесь описание изображения

Так что случилось:

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

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

введите здесь описание изображения

Обновление проекта ionic обновило версию angular с 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. Это означает, что он не может работать с новым проектом.

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

Саша


person Sascha    schedule 28.03.2019    source источник


Ответы (2)


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

this.authState$.value
person Sheik Althaf    schedule 28.03.2019
comment
Это тоже не работает. Если я верну все зависимости к старой версии, она снова будет работать (с обоими (.value и .getValue ())). - person Sascha; 28.03.2019
comment
Пожалуйста, переместите свой код в новую ветку вашего репо, и я изучу его - person Sheik Althaf; 28.03.2019
comment
github.com/mastix/meu-starter.login-flow.ionic- v4 (просто запустите npm i и ionic serve). Если вы вошли в систему, у вас должен быть доступ к дому. В противном случае Home не должен открываться. Если вы хотите, чтобы он работал, измените версию ionic angular с 4.1.2 на @ ionic / angular: 4.0.0-beta.17. - person Sascha; 28.03.2019
comment
Кстати: я отследил это до одной зависимости, которая вызывает эту проблему. Последний рабочий: @ ionic / angular: 4.0.0-beta.17 Не работает: что-либо выше, чем @ ionic / angular @ 4.0.0-beta.17. - person Sascha; 28.03.2019

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

 public _auth$:Observable<boolean> =this.authState$.asObservable();
 this._auth.subscribe(data=>{console.log(data);
})
person thangavel .R    schedule 28.03.2019
comment
Я не хочу подписываться, так как просто хочу использовать стандартное поведение (а не шаблон наблюдателя). Так что getValue () должен быть возможен. Например. см. это: medium.com/@luukgruijs/ - person Sascha; 28.03.2019