オブジェクトの配列が必要な角度コンポーネントがあります。私はサービスに配列を取得するためのコードを書いた:オブジェクトのある配列からオブジェクトの別の配列に値をコピーするには、typescript、angular 4?
private roles_list = [];
getRoles(): any[] {
return this.roles_list;
}
roles(){
const promise = new Promise((resolve, reject) => {
return this._http.get('/api/getData')
.subscribe(data => {
//this.roles_list = data
for (var i=0 ; i < Object.keys(data).length ; i++){
var temp = {};
temp["role"] = "role";
temp["value"] = data[i].key;
this.roles_list.push(temp);
}
console.log("data");
console.log(data);
console.log("roles_list");
console.log(this.roles_list);
resolve(this.roles_list);
},
err => {
reject(err);
});
});
return promise;
}
私はその後、コンポーネントで約束を解決しています:
private roles = [];
this.getDataService.roles().then(res => {
console.log(typeof(res));
this.roles = res.map(o => {
return {name: o.name,role: o.role}
});
});
しかし、これは、さまざまなエラーを投げている、それは「マップ・メソッドを言いますresはオブジェクトではない配列でなければなりませんが、{}では使用できません。どんな助けもありがとう。
編集:解決:()を通じてJSONオブジェクトを送信して問題を解決し、コンポーネントのngInit()で処理を行ったが、なぜこの問題が発生したのか誰にも分かりませんか?私たちはオブジェクトの解決を通してのみ送ることができますか?
実際に 'console.log(typeof(res))'は何を記録しますか?実際に 'Observable'を返すことができる時に' Observable'を 'Promise'の中に入れているのはなぜですか?あなたは何を達成しようとしていますか? –
'console.log(typeof(res))' 'オブジェクト'は、配列のようなものを与えるべきではありませんか? Observableについてのあなたの意見はありませんでしたか?私はこのコードで観測値を使用していません! –
あなたのサービスで注入した '_http'インスタンスは、フードの下で 'Observables'を使用します。そのため、実際に' subscribe'メソッドを呼び出して、すべてのメソッド( 'get'、' post'など) 'Response'型の' Observable'を返します。 –