我无法设置值" contact.company_name"来自方法getClient。
getContacts() {
this.contactService.getContacts().subscribe(
data => {
for (let contact of data) {
contact.company_name = this.getClient(contact);
console.log(contact);
}
this.contacts = data
},
error => console.log(error),
() => this.isLoading = false
);
}
响应是this.getClient(contact)http-request是:
{_id: "59f43f1a3a2fc421c00ad8b1", name: "company2", street: "street 2", zipcode: "45678",…}
我如何联系.company_name就像company.name? contact.company中的id与company._id中的id相同。 http请求和响应是正确的。
例如,联系人是:
{
anrede : "sir"
company : "59f43f1a3a2fc421c00ad8b1"
nachname :"surname1"
titel : "dr."
vorname : "name1"
__v : 0
_id : "59f43f363a2fc421c00ad8b2"
}
答案 0 :(得分:0)
如果您知道该公司将永远存在,只需将contact.company_name = this.getClient(contact).name;
添加到该行的末尾:
const company = this.getClient(contact);
if (company) {
contact.company_name = company.name;
}
如果它可能不存在,您需要先检查:
getClient
修改强>
现在我看到你的forkJoin
方法是如何工作的,你说它的响应是JS对象,但是它没有返回任何内容而是订阅了一个observable。
以下是使用getContacts() {
return this.contactService.getContacts()
.flatMap(data => {
if (data.length > 0) {
return Observable.forkJoin(
data.map(contact => {
return this.contactService.getClient(contact)
.map(company => {
contact.company_name = company.name;
console.log(contact);
return contact;
});
}));
}
return Observable.of([]);
});
}
解决此问题的方法(您可能需要导入该运算符才能使用它):
mouseDragged
有关如何组合可观察对象的更多示例,请参阅以下文章:
http://blog.danieleghidoli.it/2016/10/22/http-rxjs-observables-angular/