【问题标题】:Angular 4 [object Object]Angular 4 [对象对象]
【发布时间】:2017-06-14 18:34:17
【问题描述】:

我试图迭代一个数组,但 dom 显示的是 [object Object]。在其他线程中,有些人建议使用 Stringify,然后它会显示信息,但我无法遍历字符串。感谢您的帮助。

这是我的代码:

html

<div *ngFor="let price of prices">
    {{prices}}
    </div>

service.ts

import { Injectable } from '@angular/core';
import { Http, Headers, Response } from '@angular/http';
import 'rxjs/add/operator/toPromise';
import {Observable} from "rxjs";
import 'rxjs/Rx';
import 'rxjs/add/operator/catch';
import { MarketViewModel } from '../comprarmonedas/datosmoneda'


@Injectable()
export class BittrexService {

  constructor(private http: Http, private marketModel : MarketViewModel) { }

  public getPrices() :Observable<MarketViewModel> {
    return this.http.get('https://bittrex.com/api/v1.1/public/getmarketsummary?market=btc-zec')
    .map((response: Response) => response.json());
  }

}


interface

export class MarketViewModel {
  public success : boolean;
  public message : string;
  public result : MarketListObject[];
}

export class MarketListObject {
    public MarketName : string;
    public High : number;
    public Low : number;
    public Volume : number;
    public Last : number;
    public BaseVolume : number;
    public TimeStamp : number;
    public Bid : number;
    public Ask : number;
    public OpenBuyOrders : number;
    public OpenSellOrders : number;
    public PrevDay : number;
    public Created : number; 

}

组件.ts

import { Component, OnInit } from '@angular/core';
import { Http, Response, Headers } from '@angular/http';
import { BittrexService } from '../../bittrex/bittrex.service';
import {Observable} from "rxjs";

@Component({
  selector: 'app-comprarzec',
  templateUrl: './comprarzec.component.html',
  styleUrls: ['./comprarzec.component.scss']
})
export class ComprarzecComponent implements OnInit {

  private prices = [];

  constructor(private bittrexService: BittrexService) {
    this.bittrexService = bittrexService;
  }

ngOnInit(){
  this.bittrexService.getPrices()
  .subscribe(
    data => this.prices = data.result
  );
}
 }

【问题讨论】:

  • 不是打印每个价格,而是将列表合并成一个字符串
  • @nickzoum 我是新手。你是什​​么意思,我该如何解决?感谢您的回复
  • 这意味着你试图将很多对象合并成一个字符串。下面的答案显示了如何解决它。

标签: arrays angular http observable bitcoin


【解决方案1】:

替换这个:

<div *ngFor="let price of prices">
    High : {{price.High}} , Low : {{price.Low}}
</div>

您试图打印对象数组prices, 应该是price 而不是prices

    High : {{price.High}} , Low : {{price.Low}}

像这样你可以访问任何给定的值:

{
      "MarketName": "BTC-ZEC",
      "High": 0.16290000,
      "Low": 0.13087156,
      "Volume": 12760.98721068,
      "Last": 0.15650003,
      "BaseVolume": 1908.20341779,
      "TimeStamp": "2017-06-14T19:15:25.57",
      "Bid": 0.15650003,
      "Ask": 0.15786551,
      "OpenBuyOrders": 1130,
      "OpenSellOrders": 1257,
      "PrevDay": 0.13380000,
      "Created": "2016-10-28T17:13:10.833"
    }

【讨论】:

  • @ClaudioRamírezGuichard,你能告诉我价格的价值吗?
  • 我不知道价格的输出,没有别的@AJT_82
  • 好吧,我先检查一下,然后再回答是否有可能这样做。改变你的答案并有重复的答案是没有意义的。如果我发现我的答案不正确并且其他人提供了正确答案,我会删除我的答案。但我想这就是我的想法...... ;)
  • 您要我删除我的答案吗?我会做的,@AJT_82
  • 不,我删除了我的,这不是世界末日:) 只是想评论一下我的想法。其他人可能不同意我的观点:P 但无论如何,最重要的是 OP 得到了正确且有用的答案 :)
猜你喜欢
  • 1970-01-01
  • 2019-06-06
  • 2018-03-28
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 2017-07-30
  • 2020-08-25
  • 2018-12-02
相关资源
最近更新 更多