私はonInit処理を行い、一部のDBデータが呼び出されてから結合されます。私はそれが正しくフォーマットされていないので、ここに私の方法全体を貼り付けることができません。Angular2と配列フィルター/ find
u.skills.forEach(s => {
let skillEntry: SkillEntry = new SkillEntry();
skillEntry.skill = s;
let sbs: SkillBase[] = this.cachedSkillBases.filter(sb => sb.id == s.skillBaseId);
if (sbs.length>0) {
skillEntry.skillBase = sbs[0];
} else {
console.log('not found');
this._userService.getSkillBase(s.skillBaseId).toPromise()
.then(res => {
skillEntry.skillBase = res;
this.cachedSkillBases.push(res);
});
}
});
ここでは、一時キャッシュを実装して高速化していますが、検索は機能しません。変数「s」の場合、このフィルタが動作しない理由を具体的に私は知りませんが存在し、常に適切なID
let sbs: SkillBase[] = this.cachedSkillBases.filter(sb => sb.id == s.skillBaseId);
を持って、それは私がここで行方不明です何ですか?
skillBaseId)は(新しい上で自動的に設定されていますか? – misha130
あなたの '=='を '==='に変更するだけです。違いが生じる・異なる? –
skillBaseIdは、以前に取得されたデータベースに由来します。常に存在し、ここでは特に問題にはなりません。そうしないと、次に発生するサービスコールも失敗します。 ===助けにもならない。 – smoczyna