当前位置: 首页 > 知识库问答 >
问题:

Angular-在另一个组件中使用由回调设置的服务属性

公良运锋
2023-03-14
export class DataService {
  public myData;

  constructor(private http: HttpClient) {
    this.load().then((data) => {
      this.myData = data
    })
  }

  load() {
    return new Promise((resolve) => {
      this.http.get('https://reqres.in/api/users').subscribe(
        (res: any) => {
          console.log(res.data)
          resolve(res.data)
        },
        (error) => {
          console.log(error);
        }
      )
    })
  }
}
export class DataComponent implements OnInit {
  constructor(private dataService: DataService) {
    this.prepareData();
  }

  prepareData() {
    console.log(this.dataService.myData)
  }

  ngOnInit(): void {
  }
}

以下是源代码:https://stackblitz.com/edit/angull-ivy-kbpdpo

共有1个答案

郑松
2023-03-14

因为这是一个异步函数,所以您正在运行一个争用条件。

此更改有效:https://stackblitz.com/edit/angull-ivy-vf3llg

考虑阅读https://angular.io/guide/http

 类似资料:
  • 我使用CXF、REST服务和Apache Camel实现了以下API。 http://localhost:9090/api/compute http://localhost:9091/api/listaction null IllegalArgumentException:无效的URI:/API/ListAction/API/ListAction。如果您正在转发/桥接httpendpoint,则在

  • 各位专家下午好, 我需要调用3个REST API的顺序调用,作为单个客户机调用GET/offers的一部分,以检索百货公司不同通道中每种产品的可用报价,如下所示 然后在循环中检索每个并调用第二个API以获得产品 然后在循环中检索每个并调用第三个API以获得提供 最后,整理所有的响应,将报价列表发送给客户。

  • 我有一些这样的路线 在NewUrlComponent中,我可以像这样轻松地获取数据 我遇到的问题是我在屏幕上有另一个组件,不知何故,我需要在另一个组件中显示该数据标题。我不知道这有可能吗?

  • 我有一个异步函数getIdentByInfo,在控制台中,如果我将它记录在这个函数中,就会得到正确的输出。当我在另一个组件中调用它时,它就不工作了,我只得到“未定义”。我知道这与蜂群同步和承诺有关,但我不知道如何解决我的问题。我需要在另一个组件中填充来自http请求的属性的模型类,以便将它们发送到另一个服务

  • 假设我有以下名为Home的组件: 在PostForm组件与新Post一起提交后,我将如何更新主状态,或者如何从api重新获取数据。

  • 我使用Reavt V6路由。 我正在努力让我的路线在游戏组件中工作。 在完全空白的页面中查看/测试结果。而它应该在gamecomponent中加载犯罪模块。访问/呈现gamecomponent,但/test不会呈现gamecomponent及其内部的路由。 我怎样才能让它工作? 访问url/crime会导致被加载,并且 应该上膛了。 app.js 专用路线: 游戏成分: