私はAngular2が初めてで、Httpリクエストとオブザーバブルを使い始めました。 以前は.NETとMySqlで作業していましたが、現在はAPIのデータを扱うベストプラクティスを学びたいと考えています。apiリクエストを結合する
私はテーブルを結合するために使用されています.Jsonデータを結合する最適な方法を探したいと思います。 この例では、ユーザーがフォームに記入して電話番号を入力します。
電話番号のプレフィックスは、国コードと接頭辞がf.exのドロップダウンリストです。ドイツ+49 そのため私は、オブジェクトが必要です:{「ドイツ」:」49” 、カンボジア: "855" ...}
私はcountry.ioする2 httpリクエストを行います。これらのことから
http://country.io/phone.json // e.g. DE: “Germany”
http://country.io/names.json // e.g. DE: “49”
2リクエスト私は新しいjsonオブジェクトを作成するために以下のコードを使用しました:myPhonePrefixObject
私はコードが長すぎると思っており、より良い方法でそれを行うことができるはずです。
国-service.ts:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/Rx';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class CountryService {
constructor( private _http:Http) { }
getCountryCode(): Observable<any> {
return this._http.get('http://crossorigin.me/http://country.io/phone.json')
.map(countryCodes => countryCodes.json());
}
getPhonePrefix(): Observable<any> {
return this._http.get('http://crossorigin.me/http://country.io/names.json')
.map(phonePrefix => phonePrefix.json());
}
}
コードuserform.component内部の私はここにもCountryService
myPhonePrefixObject;
this.countryPhonePrefix()
.then((pp) => {
myPhonePrefixObject = pp;
})
.catch((err) => {
console.log(err);
});
private getCountryCode() {
return new Promise((resolve) => {
this._countryService.getCountryCode()
.subscribe(
res => resolve(res)
);
});
}
private getPhonePrefix() {
return new Promise((resolve, reject) => {
return this._countryService.getPhonePrefix()
.subscribe(
res => resolve(res),
error => reject(error)
);
});
}
private countryPhonePrefix() {
return new Promise((resolve, reject) => {
let cc: Object;
this.getCountryCode()
.then((cCode) => {
cc = cCode;
return this.getPhonePrefix()
})
.then((pPrefix) => {
let pp: Object = {};
Object.keys(cc).forEach((key, index) => {
pp[cc[key]] = pPrefix[key];
});
resolve(pp);
})
.catch((err) => {
reject(err);
});
});
}
こんにちはハリー はありがとうございました!! これはまさに私が探していたもので、彼の答えは私を助けました! –