【发布时间】:2023-03-08 23:54:01
【问题描述】:
我是 Angular2 和 Rx 的新手。
我的目的是从 Git 中心获取用户并显示登录名。 (我在网上阅读 RxJs 时得到了 sn-p)我想使用 Angular 2 来实现它。
export class AppComponent implements OnInit{
private listEmpty : boolean;
private userList : any;
constructor(){
}
ngOnInit(){
this.listEmpty = true;
this.userList = [];
var reqStream = Rx.Observable.just('https://api.github.com/users');
var responseStream = reqStream.flatMap(function(reqUrl){
return Rx.Observable.fromPromise($.getJSON(reqUrl));
});
responseStream.subscribe((res)=>{
this.userList = res;
this.listEmpty = false;
});
}
}
我的模板如下所示:
<div *ngIf="listEmpty">List empty</div>
<div *ngFor="let u of userList">
<span>{{u.login}}</span>
</div>
问题: 在sn-p中:
responseStream.subscribe((res)=>{
this.userList = res;
this.listEmpty = false;
});
当我在 chrome 控制台和 'subscribe' 函数体正在执行。 但是这些变化并没有反映在视图中。
如果我遗漏了什么,请告诉我。
【问题讨论】:
-
试试
<div *ngFor="let u of (userList | async)?"> -
不要使用 jQuery 发送 HTTP 请求。使用 Http Angular 服务,它返回一个 Observable:
http.get(url).map(resp -> resp.json()).subscribe(...)。