在更新到最新的Angular(从v6到v7)后,BehaviorSubject(在Ionic Project中)的行为异常

时间:2019-03-28 11:15:46

标签: angular typescript ionic-framework behaviorsubject

这真是骗我疯了

我已经签出了一个非常简单的ionic v4 Project with a login flow

该演示程序运行良好,但是由于该项目已经进行了5个月,所以我决定创建一个具有最新离子cli的新离子项目,并将源代码放入具有最新稳定离子的新项目中。依赖性。

但是随后rxJS-BehaviorSubject(authState $)表现得很奇怪,请参见屏幕截图。

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

代码(我已经在isAuthenticated()方法中添加了一些console.logs):

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

控制台:

enter image description here

那是怎么回事:

getValue()返回初始值,其中打印对象包含正确的值(true)。这对我来说很奇怪,因为他们两个都被彼此追称。

当我将版本改回原来的package.json时,它将再次起作用:

enter image description here

ionic项目的更新将角度版本从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。这意味着它不能用于新项目。

非常感谢,

Sascha

2 个答案:

答案 0 :(得分:0)

尝试直接访问值

this.authState$.value

答案 1 :(得分:0)

您需要使其可观察到以订阅数据。请这样使用

{{1}}