从Angular2/ionic的提供商中观察到的http



我在迁移我的离子应用程序(Angular> angular2)中遇到一些困难,主要是带有承诺/可观察的。

这是我在 CARTPAGE 上的方法:

this.cartService.list().subscribe(
data => {
    console.log(data);
    this.cartData = data.cart;
err => {
    console.log(err);
});

CART提供商

list() {
    this.storage.get('token')
    .then((token) => {
        var authHeader = new Headers();
        authHeader.append('Authorization', 'Bearer ' + JSON.stringify(token).replace(/['"]+/g, ''));
        this.http.get(this.global.getApiUrl()+'cart/list', {
            headers: authHeader
        })
        .map(res => res.json())
        .subscribe(
            data => {
                this.data = data.data;
                return this.data;
            },
            err => {
                console.log(err);
            }
        );
    });
}

但我得到:

打字稿错误属性"订阅"不存在于类型的" void"。


所以我已经搜索和搜索过,在文档或示例/教程中都没有找到这样的可观察到的可行的可行的。

我不知道我是否缺少以某种方式声明类型,还是我不使用订阅并使用一些不同的方法。

谢谢!

购物车页面:

   this.cartService.list(token).subscribe(
      data => {
         console.log(data);
         this.cartData = data.cart;
      err => {
         console.log(err);
      });

购物车提供商:

   list(token) {
      var authHeader = new Headers();
      authHeader.append('Authorization', 'Bearer ' + JSON.stringify(token).replace(/['"]+/g, ''));
      return this.http.get(this.global.getApiUrl()+'cart/list', {
          headers: authHeader
      })
      .map(res => res.json());
   }

好吧,这是一个种族条件,这里的主要问题是您需要令牌 http request ,但是您必须从Storage获取这些信息,并且该操作是 async

找到一种在列表调用之前获取令牌的方法。最简单的方法是让提供商持有该数据并将其用作离子Storage提供商的代理,因此,当提供商启动时,它运行类似于init()并获取应用程序所需的基本数据,例如>令牌和其他东西,然后您只需将该提供商注入CartProvider并致电myDataProvider.token

相关内容

  • 没有找到相关文章

最新更新