Angular2中如何枚举Observable订阅返回的数据?
How to enumerate data returned from Observable Subscription in Angular 2?
我对 observable 的工作原理有基本的了解,我可以通过调用 subscribe 方法获取数据并在我的模板中呈现数据。但是我无法在我的组件中枚举 observable 返回的数据。我想在将数据发送到我的模板之前在组件级别处理它们。
到目前为止我已经试过了:
我的服务:
getCountries(): Observable<IUser> {
return this.http.get<IUser>('https://jsonplaceholder.typicode.com/posts');
}
我在组件中的 ngInit 方法:
ngOnInit() {
this.countryService.getCountries().subscribe((users => {
this.userJson = users;
}));
console.log(this.userJson); // Showing undefined
//giving exception while calling length property
for (var i = 0; i < this.userJson.length; i++) {
}
}
不确定如何处理?
您需要在 subscribe
方法中编写您的逻辑。这是一个异步调用,您无法知道它何时完成。
this.countryService.getCountries().subscribe((users => {
this.userJson = users;
console.log(this.userJson);
for (var i = 0; i < this.userJson.length; i++) {
}
}));
您仍然可以在标记中使用 userJson
- Angular 将检测 this.userJson
的值何时更新,并自动更新 UI。
需要在subscribe里面调用console.log才能生效,为什么要在里面调用?因为它是一个异步请求;您可以通过如下调用函数来遍历项目,
ngOnInit() {
this.countryService.getCountries().subscribe((users => {
this.userJson = users;
console.log(this.userJson);
printMe(this.usersJson);
}));
printMe : void (){
for (var i = 0; i < this.userJson.length; i++) {
}
}
我对 observable 的工作原理有基本的了解,我可以通过调用 subscribe 方法获取数据并在我的模板中呈现数据。但是我无法在我的组件中枚举 observable 返回的数据。我想在将数据发送到我的模板之前在组件级别处理它们。
到目前为止我已经试过了:
我的服务:
getCountries(): Observable<IUser> {
return this.http.get<IUser>('https://jsonplaceholder.typicode.com/posts');
}
我在组件中的 ngInit 方法:
ngOnInit() {
this.countryService.getCountries().subscribe((users => {
this.userJson = users;
}));
console.log(this.userJson); // Showing undefined
//giving exception while calling length property
for (var i = 0; i < this.userJson.length; i++) {
}
}
不确定如何处理?
您需要在 subscribe
方法中编写您的逻辑。这是一个异步调用,您无法知道它何时完成。
this.countryService.getCountries().subscribe((users => {
this.userJson = users;
console.log(this.userJson);
for (var i = 0; i < this.userJson.length; i++) {
}
}));
您仍然可以在标记中使用 userJson
- Angular 将检测 this.userJson
的值何时更新,并自动更新 UI。
需要在subscribe里面调用console.log才能生效,为什么要在里面调用?因为它是一个异步请求;您可以通过如下调用函数来遍历项目,
ngOnInit() {
this.countryService.getCountries().subscribe((users => {
this.userJson = users;
console.log(this.userJson);
printMe(this.usersJson);
}));
printMe : void (){
for (var i = 0; i < this.userJson.length; i++) {
}
}