订阅不是功能

时间:2018-07-03 17:57:54

标签: asp.net angular typescript ionic-framework observable

我正在尝试从ASP.net核心Web API获取数据并在ionic 3应用程序内部进行访问。尝试从asp.net获取数据。但是我想过滤离子应用程序中的检索数据。我编写了以下代码,以使用订阅功能过滤产品。

import {ProductProvider} from '../../providers/product/product';

constructor(
    public navCtrl: NavController,
    private camera: Camera,
    public alertCtrl:AlertController,
    public actionsheet:ActionSheetController,
    public image:UploadProvider,
    public pro:ProductProvider) {
}

getMyproduct() {
    this.pro.getPostedProducts()
        .then(data => {
            this.products = data;
            console.log(data);

            this.id = this.sellerID.id;
            this.products.subscribe(productevents => {
                let productevent = productevents

                this.myProduct_arr = productevent.filter(event => {
                    return event.sid=this.sellerID;
                })
            })
        })
}
<ion-list>
  <ion-item *ngFor="let product of myProduct_arr">
    <p> {{product.name}}</p>
    <p> {{product.brand}}</p>
    <p> {{product.price}}</p>
  </ion-item>
</ion-list>

但是当我运行它时,出现以下错误:

TypeError: _this.products.subscribe is not a function

谁能说出这是什么原因?

1 个答案:

答案 0 :(得分:0)

在使用.subscribe的代码段中:

this.products.subscribe(productevents=>{

您正在对对象this.products使用subscription,但是在控制器中未将product声明为可观察的产品。

似乎在.then函数内部,您正在引用要使用的数据...

this.products = data;

在此行上,您将this.products设置为.getPostedProducts()函数的响应。如果一个依赖于成功从另一个传递的响应,我建议将.then.finally链接。您可以在这篇文章中了解它:

What is the difference between then and finally in a promise?