2017-01-31 25 views
0

我无法在html视图中显示我的对象详细信息(使用ionic2)。以下输出cart.ts文件中的正确值(输出胡萝卜)。无法获取视图中的对象属性

this.cart = resultsFromAPI  
console.log(this.cart.vegetable); 

但是,当我尝试在视图中输出它时,它不会再让我查看该页面。我假设是因为一个错误。

<h2>{{cart.vegetable}}</h2> 

如果我只输出我得到的翻译:在头

<h2>{{cart}}</h2> 

它看起来像错误是“无法读取的未定义的属性‘菜’”的对象。我如何阅读它在ts中但不是视图?

下面是完整的TS码

cart:any; 

    ngOnInit(){ 
    this.getPosts(this.category, this.limit); 
    } 

    getPosts(category, limit){ 
    this.cartService.getPosts(category, limit).subscribe(response => { 
     this.cart = response.data.children; 
     console.log(this.cart.vegetable); 
    }); 
    } 

答: 我跟着下面后却不得不调用

public getPosts$(category, limit) { 
    return this.cartService.getPosts(category, limit).map(response => { 
     this.cart = response.data.children; 
    }; 
} 

回答

1

它之前把回报,因为你正在做一个异步API调用,所以你应该检查它是否可用之前使用它。此外,您可以通过async管道直接将API响应用作Observable。

<h2>{{(cart | async)?.vegetable}}</h2> 

对于OP编辑: 你可以只写(在FNAME结束的$意味着它是一个流):

public getPosts$(category, limit) { 
    return this.cartService.getPosts(category, limit).map(response => { 
    return response && response.data && response.data.children; 
    }; 
} 

和:

ngOnInit() { 
this.getPosts$(this.category, this.limit).subscribe(cart => { 
    this.cart = cart; 
} 
} 

和:

<h2 *ngIf="cart>{{cart.vegetable}}</h2> 
+0

当我在ngO中调用函数nInit我得到“财产认购不存在于无效”。 – Matt

+0

@Matt检出你的服务代码,看起来你不会从this.cartService.getPosts方法返回一个Observable –

+0

我仍然在学习,并遵循一个教程到这一点。下面是getPosts getPosts(类别,限制)返回this.http.get(this.baseUrl +'/'+ category +'/ top.json?limit ='+ limit) .map(res => res.json )); } – Matt