如何从ngOnInit Angular中的服务获取数据

问题描述 投票:0回答:1

我尝试从http服务获取ngOnInit中的数据时遇到问题。触发组件时,我需要在var中设置数据,以便可以在其他函数中使用它。

我通过执行ngngInit异步操作并从Promise函数接收响应来实现这一点,但是我认为这不是一个好习惯吗?我该如何改善?

这是我的代码:

COMPONENT.TS



     async ngOnInit() {
        this.username = localStorage.getItem('username');
        this.segment.value = 'FUNCIONAL';
        this.categoria = this.segment.value;
        this.listadoClases = await this.claseServicio.obtenerListadoClases(this.categoria); // **Need to set this variable at onInit**


SERVICE.TS


    getClases(actividad) {
        return this.http.get(`https://anders-test.herokuapp.com/clases/obtenerPorCategoria/${actividad}`);
      }


      obtenerListadoClases(categoria) {
        return new Promise(resolve => {
          this.getClases(categoria).subscribe(data => {
            if (data) {
              resolve(data)
            }
          })
        })
      }

我这样做是因为我试图学习/理解异步/等待。我想稍微提高一下代码水平。.但是,我在阅读了很多书之后还是不明白这个主意。

谢谢大家!

我尝试从http服务获取ngOnInit中的数据时遇到问题。触发组件时,我需要在var中设置数据,以便可以在其他函数中使用它。我通过异步实现了这一点...

angular ionic-framework service async-await
1个回答
0
投票

HttpClient以角度返回一个Observable对象。您可以只订阅它,并且会给您响应并且可以在多线程上工作。这样,您可以避免用户等待响应出现。这是一个好习惯,与此同时,您可以独立于api响应数据执行其他操作。

© www.soinside.com 2019 - 2024. All rights reserved.