我想从company-list.component
getCompanies()
订阅company.service
。但是我收到以下错误:
无法阅读财产'订阅'未定义的
这是代码:
getCompaniesOfUser() {
let r;
this.userService.getUser().subscribe(
res=> r = res,
err => console.log(err),
()=>(this.getCompaniesWithSpecificLink())
)
}
getCompaniesWithSpecificLink() {
if (isAdmin == false) {
url = '/user/companies';
} else {
url = '/companies';
}
return this.getCompanies(url);
}
getCompanies(url):Observable<Company[]> {
return this.http.get(this.host + url)
.map((res:Response) => res.json());
}
companies:Company[];
public getTheCompanies() {
this._companyService.getCompaniesOfUser()
.subscribe(companies => this.companies = companies); <-- the error occurred here
}
答案 0 :(得分:3)
必须在observable上使用Subscribe方法,但是getCompaniesOfUser()
方法没有返回任何内容,因此是一个void方法。
如果您想呼叫背靠背休息服务。就像一个人的输入,取决于其他人的输入&#39;输出。您应该使用flatMap
运算符。
请查看此答案,例如:https://stackoverflow.com/a/36712707/5706293
这样的事情应该有效:
getCompaniesOfUser() {
return this.userService.getUser().flatMap( (resp) => {
return this.getCompaniesWithSpecificLink();
});
}