繁体   English   中英

无法将可观察结果设置为局部变量 - 未定义

[英]Unable to set observable result to local variable - undefined

我是 Angular 的新手。我有一个服务 class,它有从组件 A 触发的主题事件。然后我自动重定向到组件 B 以订阅此事件并将其信息提取到局部变量。 结果 - 它们在 scope of.subscribe() 方法之外未定义。

这是组件B中的代码

 ngOnInit(): void {

        this.editUserForm = this.formBuilder.group({
            userName: ['Enter username'],
            firstname: ['Enter first name'],
            lastname: ['Enter last name'],
            email: ['Enter email']
        })
           this.userService.getEditUserInfoEvent().subscribe({
            next:((editUserInfo) => 
                this.setEditFormEventValues(editUserInfo))
        })
    }

    private setEditFormEventValues(userInfo: IGetUserModel) {
      this.id = userInfo.id;
      this.editUserForm.patchValue({
        userName:  userInfo.userName,
        firstname:  userInfo.firstname,
        lastname: userInfo.lastname,
        email: userInfo.email
      })
    }
   

这是正常行为吗?如何有效地提取数据? 如果我尝试在这两种方法之外读取 this.id 的数据 -它是未定义的我在某处阅读了 .map 方法,但我不确定如何实现它,到底是什么? 任何帮助将不胜感激 - 我试图解决这个问题超过 5 个小时。

好的伙计们。 我发现了我的错误。 错误在于将事件作为一种类型是 Subject。 这就是整个问题。 当我使用 Subject 发送事件时,侦听器位于另一个组件中,尚未构建。 当 Subject 没有真正的听众时,该事件将被忽略。 这就是为什么我改为行为主题。 它缓存最后一个事件并在订阅者主动收听时发送它。 谢谢您的合作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM