无法将JSON绑定到angular 4 Object

时间:2017-04-24 20:08:23

标签: angular

我正在返回一个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一样。

2 个答案:

答案 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());
        }