首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular .subscribe未更新

Angular .subscribe未更新
EN

Stack Overflow用户
提问于 2021-07-15 21:26:58
回答 1查看 111关注 0票数 0

我正在开发一个具有Scala后端的Angular web应用程序。我有一个复选框,当满足某个条件时,它会自动勾选。应用程序的用户将被提示在另一个页面上输入一些信息,当他们返回时,它应该被勾选。

我已经向scala添加了一个println,以确保字段实际上正在更新,这是有效的。.subscribe包含在我的ngOnInit()中,但是由于某些原因,它没有提取新数据。

代码语言:javascript
复制
ngOnInit(): void {
    this.userService.loggedInUser().subscribe( u => {
        this.user = u;
        this.service.getData().subscribe( data => {
          if (data) {
            if (data.formCompleted) {
              this.formCompleted = true;
            }
          }
        })
    });
  }

我要补充的是,当用户单击另一个用户配置文件,然后单击回他们正在编辑的配置文件时,该框是正确勾选的。因此,我知道数据会返回到应用程序中,但不是在我需要的时候。

编辑:

因此,我在浏览器上检查了Inspect元素中的'Network‘选项卡,可以看到数据是存在的。我就是不明白为什么if()没有被触发。不,这并不是因为嵌套的subscribe(),因为用户必须登录才能查看此页面,并且订阅工作正常。

EN

回答 1

Stack Overflow用户

发布于 2021-07-16 01:07:03

这听起来像是一种更具声明性的、反应式的方法,可能更适合您的场景。像这样的东西(没有测试,因为我没有你的方法)。

代码语言:javascript
复制
user$ = this.userService.loggedInUser();

data$ = this.user$.pipe(
           switchMap(user => this.service.getData()),
           tap(data => {
                 if (data.formCompleted) {
                    this.formCompleted = true;
                 }
           })
        );

ngOnInit(): void {
   this.sub = this.data$.subscribe();
}

ngOnDestroy(): void {
   this.sub.unsubscribe();
}

有关此技术的更多信息,请查看此处的第一次演讲:https://www.youtube.com/watch?v=iSsch65n8Yw

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68394743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档