首页 > 解决方案 > 订阅 Observer 然后将响应输出到控制台返回 undefined

问题描述

当我订阅 Angular 组件中的服务提供的 API 端点时,我无法从我的 typescript 代码中的 observable 访问这些值,但是我可以在 HTML 中看到它们。

角色服务.ts

getAllRoles() {
    return this.http.get<Role[]>(`${environment.privateApiUrl}/Role/Get`);
}

应用程序组件.component.ts

  roles: Role[];

  ngOnInit(): void {

    this.roleService.getAllRoles().subscribe(data => {
      this.roles = data
    })

    console.log(this.roles) <-- Returns undefined
  }

但是,如果我在我的 HTML 中调用角色,我可以看到所有的值。如果我在订阅中调用 console.log,我可以看到这些值。

订阅后如何在 Typescript 中访问该对象?

谢谢

标签: angulartypescriptangular2-observables

解决方案


调用console.log里面的订阅者函数。

roles: Role[];

ngOnInit(): void {

  this.roleService.getAllRoles().subscribe(data => {
    this.roles = data
    console.log(this.roles);
  });
}

推荐阅读