我正在返回一个JSON对象,但*ngFor
循环没有呈现任何内容。
组件:
@Input() users: Observable<IUser>;
this.users = this.getUserByRole(this.role);
getUserByRole(role) {
return this._searchService.getUsersByRole(role);
}
HTML:
<tr saSmartMenu *ngFor='let data of users | async' (click)="onEditUser.emit(data)">
<td>{{data.ssn }}</td>
<td>{{data.userName }}</td>
<td>{{data.lastName }}</td>
<td>{{data.ofcSymbId }}</td>
<td>{{data.role }}</td>
</tr>
search.service:
getUsersByRole(role:string) {
return this.http.get(this.url+role)
.map(res => res.json().data);
}
我用一个安静的客户端检查JSON,我的对象就像我得到的JSON一样。
答案 0 :(得分:2)
我可能错了,但我相信你需要订阅你的observable来得到一个结果......这样的事情:
this.http.get(this.url+role)
.map(res => res.json().data)
.subscribe(result => result); // Not sure what you want in your fat arrow function here
答案 1 :(得分:1)
您必须订阅才能让您的Observable发出请求。来自 Documentation
冷与热观察
Cold Observables在订阅时开始运行,即可观察对象 在订阅时,序列仅开始向观察者推送值 调用。订阅者之间也不会共享值。
为了致电您的服务,请执行此操作
<强>组件强>
@Input() users: Observable<IUser>;
getUserByRole(role) {
this._searchService.getUsersByRole(role).subscribe(res=> {
this.users = res;
});
}
<强>服务强>
getUsersByRole(role:string) {
return this.http.get(this.url+role)
.map(res => res.json());
}