Błąd Angular4 podczas próby porównania „[obiekt obiektu]”


Próbuję wyświetlić informacje w domenie, ale pojawia się ten błąd:

Błąd: błąd podczas próby porównania „[obiekt obiektu]”

To, co próbuję zrobić, to iteracja tych danych z

https://www.surbtc.com/api/ v2/Markets/btc-clp/ticker
https://www.surbtc.com/api/v2/ ... icker
:

{"ticker":{"last_price": ["1771455.0","CLP"], "min_ask": ["1771432.0","CLP"], "max_bid": ["1660003.0","CLP"], "volume": ["178.37375119","BTC"], "price_variation_24h":"-0.107","price_variation_7d": "-0.115"}}

Chcę to wyświetlić w html w ten sposób:
<div *ngFor="let price of prices">
{{price.min_ask}}

to jest 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 { SurbtcMarket } from './surbtcmarket'
@Injectable()
export class SurbtcService { constructor(private http: Http, private surBtcMarket : SurbtcMarket) { } public getPricess() :Observable<SurbtcMarket> {
return this.http.get('https://www.surbtc.com/api/v2/markets/btc-clp/ticker')
.map((response: Response) => response.json());
}}

Interfejs Surbtcmarket.ts
export class SurbtcMarket {
public ticker: SurbtcMarketView[];
}export class SurbtcMarketView {
public last_price : number;
public min_ask : number;
public max_bid : number;
public volume : number;
public price_variation_24h : number;
public price_variation_7d : number;
}

component.ts
import { Http, Response, Headers } from '@angular/http';
import { SurbtcService } from '../../surbtc/surbtc.service';
import {Observable} from "rxjs";@Component({
selector: 'app-comprarltc',
templateUrl: './comprarltc.component.html',
styleUrls: ['./comprarltc.component.scss']
})
export class ComprarltcComponent implements OnInit { private prices = []; constructor(private surbtcService: SurbtcService) {
this.surbtcService = surbtcService;
}ngOnInit(){
this.surbtcService.getPricess()
.subscribe( data => this.prices = data.ticker
);
}
}

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli chcesz mieć tablicę
price
, masz obiekt
push
w tablicy
price
.
ngOnInit(){
this.surbtcService.getPricess()
.subscribe( data => this.prices.push(data.ticker);
);
}

LUB możesz po prostu uzyskać bezpośredni dostęp do właściwości obiektu, przypisując
data.ticker
price
.
private prices = new SurbtcMarketView();constructor(private surbtcService: SurbtcService) {}
ngOnInit(){
this.surbtcService.getPricess()
.subscribe(data =>{
this.prices = data.ticker;
});
}

HTML:
<div *ngFor="let item of prices.min_ask">
{{item}}

UPDATE:
Popatrz

demonstracja
https://plnkr.co/edit/malbXKcA ... eview
Plnkr, rozwiązałem problem, który powodował błąd podczas analizowania odpowiedzi json.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W przeciwnym razie możesz również użyć tego,
prices : SurbtcService[] = [];

Następnie możesz wypchnąć obiekt niestandardowy i utworzyć go jako tablicę,
this.prices.push(<<the data you want to push>>);
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

public getPricess() :Observable<SurbtcMarket> { return this.http.get('https://www.surbtc.com/api/v2/markets/btc-clp/ticker') .map((response: Response) => response.json() as SurbtcMarket); }

Może to być spowodowane tym, że nie jest przypisany do typu. Zakładam, że jest to tylko jeden obiekt retun, w przeciwnym razie będziesz musiał zwrócić tablicę.
public getPricess() :Observable<SurbtcMarket[]> { return this.http.get('https://www.surbtc.com/api/v2/markets/btc-clp/ticker') .map((response: Response) => response.json() as SurbtcMarket[]); }

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się