【问题标题】:Can't get object properties in view无法在视图中获取对象属性
【发布时间】:2017-06-17 14:09:42
【问题描述】:

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

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

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

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

如果我只输出对象,我会在标题中得到 [object Object]

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

看起来错误是“无法读取未定义的属性 'vegetable'”。如何在 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);
    });
  }

回答: 我关注了下面的帖子,但必须在调用之前将 return 放回

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

【问题讨论】:

    标签: javascript angularjs angular ionic-framework ionic2


    【解决方案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>
    

    【讨论】:

    • 当我在 ngOnInit 中调用该函数时,我得到“属性订阅不存在于 void”。
    • @Matt 检查您的服务代码,您似乎没有从 this.cartService.getPosts 方法返回 Observable
    • 我仍在学习并遵循教程到此为止。下面是getPosts getPosts(category, limit){ return this.http.get(this.baseUrl+'/'+category+'/top.json?limit='+limit) .map(res => res.json()) ; }
    • 这是我的错,我更正了上面的代码,我错过了返回声明
    • 感谢您的帮助,非常感谢。我似乎无法运行 if (我得到同样的错误)。在我遵循的教程中,他们引入了一个数组并循环遍历它,它工作正常。但是,当我将一个对象带到视图中时,我遇到了这些问题。我发布了新问题。再次感谢stackoverflow.com/questions/41985595/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多