【问题标题】:BehaviorSubject (in Ionic Project) behaves strangely after update to latest Angular (v6 to v7)BehaviorSubject(在 Ionic Project 中)在更新到最新的 Angular(v6 到 v7)后表现异常
【发布时间】:2019-08-19 03:26:46
【问题描述】:

这真的让我发疯了。

我检查了一个非常简单的ionic v4 Project with a login flow

演示工作得非常好,但由于这个项目已经 5 个月大了,我决定使用最新的 ionic cli 创建一个新的 ionic 项目,并将源代码放入新的项目中......使用最新的稳定 ionic依赖关系。

但是 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$);

控制台:

那么发生了什么:

getValue() 返回初始值,其中打印的对象包含正确的值 (true)。这对我来说似乎很奇怪,因为它们都是紧接着被调用的。

当我改回版本(到原始 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。

创建新的 ionic 项目时,它附带 4.1.0。这意味着它不能用于新项目。

非常感谢,

萨沙

【问题讨论】:

    标签: angular typescript ionic-framework behaviorsubject


    【解决方案1】:

    您需要使其成为可观察的才能订阅数据。请这样使用

     public _auth$:Observable<boolean> =this.authState$.asObservable();
     this._auth.subscribe(data=>{console.log(data);
    })
    

    【讨论】:

    • 我不想订阅,因为我只想使用标准行为(不是观察者模式)。所以 getValue() 应该是可能的。例如。看到这个:medium.com/@luukgruijs/…
    【解决方案2】:

    尝试直接访问值

    this.authState$.value
    

    【讨论】:

    • 那也行不通。如果我将所有依赖项改回旧版本,它会再次工作(使用 (.value 和 .getValue()))。
    • 请将您的代码推送到您的仓库中的新分支,我会调查它
    • github.com/mastix/meu-starter.login-flow.ionic-v4(只需运行 npm i 和 ionic serve)。如果您已登录,您应该能够访问“主页”。如果没有,“主页”不应打开。如果您想看到它工作,请将 ionic angular 版本从 4.1.2 更改为 "@ionic/angular": "4.0.0-beta.17"。
    • 顺便说一句:我已将其追踪到导致此问题的单个依赖项。最后一个工作:“@ionic/angular”:“4.0.0-beta.17”不工作:高于@ionic/angular@4.0.0-beta.17。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 2021-08-03
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    相关资源
    最近更新 更多