私はAng2を学んでいます。私はヒーローチュートリアルをうまく使いました。練習するために、メインページにリンクを追加して新しいコンポーネントを入手しました。ラジオステーションのリストを含むjsonファイルがあります。以下は私のサービス、およびコンポーネントです:Angular 2 httpサービス
import { Radio } from '../models/radio';
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import 'rxjs/Rx';
@Injectable()
export /**
* RadioService
*/
class RadioService {
radios: Radio[] = [];
len: Number = 0;
http: Http;
constructor(http: Http) {
this.http = http;
}
getRadios() {
console.log('Radios Service is being called');
this.http.get('app/mock/FranceRadioJSON.json')
.map((res: Response) => res.json())
.subscribe((rad: Radio[]) => { // Succes
console.log('Radios Service Success');
this.radios = rad;
this.len = rad.length;
}
, err => {// Failure
console.log('Radio Services Failure');
console.error(err);
}
, // complete
() => {
console.log('Get Radios Complete');
console.log('Records NB: ' + this.len);
console.log('radios nb: ' + this.radios.length)
}
)
;
return this.radios;
}
とコンポーネントは次のとおりです。
import { Component, OnInit } from '@angular/core';
import { RouteParams } from '@angular/router-deprecated';
import { Radio } from '../../models/radio';
import { RadioService } from '../../services/radio.service';
@Component({
selector: 'radio'
, templateUrl: 'app/html/radio.component.html'
, providers: [RadioService]
})
export /**
* RadioComponent
*/
class RadioComponent {
radios: Radio[] = [];
constructor(
private radioservice: RadioService) {
}
getRadios() {
this.radios = this.radioservice.getRadios();
console.log('radio component NB: ' + this.radios.length);
}
ngOnInit() {
this.getRadios()
}
}
問題は、サービスの呼び出しが最初に来ているし、何のラジオがサービスである場合はしばらくリターンではありません私はそれが成功し、JSONファイルからすべてのレコードを取得することがわかります。どんな助けでも大歓迎です。
ありがとうございました。私はプロセスがはるかに良く見えます。 –
サービスが強制的にラジオ[]を返すようにすることができますか、またはコンポーネントのレスポンスを変換する必要がありますか? –
あなたは 'Radio'クラス(またはインターフェース)を提供していませんでした。完全な情報なしで伝えるのは難しい。 http://stackoverflow.com/questions/22885995/how-do-i-initialize-a-typescript-object-with-a-json-objectがあなたの探しているものかもしれません。 –