大佬教程收集整理的这篇文章主要介绍了Angular2 – OnInit:从Service’subscribe函数返回的值未分配给Component字段/ s,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的组件:
@H_944_3@import { Component,OnInit } from '@angular/core'; import { User } from '../common/user/user'; import { Userservice } from '../common/user/user.service'; @Component({ SELEctor: 'app-nav',templateUrl: '/app/nav/nav.component.html',styleUrls: ['/app/nav/nav.component.css'] }) export class NavComponent implements OnInit { errorMsg: String; users: User[]; constructor(private userservice: UserservicE) { } getUsers() { thiS.Userservice .getUsers() .subscribe( function(users) { console.log('users ' + users); thiS.Users = users; console.log('thiS.Users ' + thiS.Users); },function(error) { console.log('error ' + error); }); // users => thiS.Users = users,// error => this.errorMsg = <any>error); } ngOnInit() { this.getUsers(); console.log('ngOnit after getUsers() ' + thiS.Users); } }我的问题是,在getUsers()调用完成后,订阅函数返回的数据没有被传递/分配给我的Component属性’users’.我知道数据是从服务方法调用返回到组件的,因为我能够在userservice().getUsers方法中记录数据.奇怪的是,我的ngOnInit上的console.log调用首先在我的开发控制台上打印在我的getUsers方法中的console.logs之前,尽管我首先调用了getUsers:
@H_944_3@ngOnInit() { this.getUsers(); console.log('ngOnit after getUsers() ' + thiS.Users); }Dev控制台截图:
这应该做你想要的:
@H_944_3@getUsers() { return thiS.Userservice .getUsers() .map( (users) => { console.log('users ' + users); thiS.Users = users; console.log('thiS.Users ' + thiS.Users); }) .catch((error) => { console.log('error ' + error); throw error; }); // users => thiS.Users = users,// error => this.errorMsg = <any>error); } ngOnInit() { this.getUsers().subscribe(_ => {; console.log('ngOnit after getUsers() ' + thiS.Users); }); }在getUsers()中,我使用map()而不是subscribe,因此我们可以稍后订阅,以便能够在响应到达时执行代码.
然后在NgOnInit()中我们使用subscribe()(必须使用subscribe(),否则将永远不会执行http.get())并在响应到达时传递我们想要执行的代码.
我还将function()更改为()=>.这种方式适用于以下代码块()=> {…},否则就不会.
别忘了添加
@H_944_3@import 'rxjs/add/operator/map'; import 'rxjs/add/operator/catch';否则这些运算符将无法识别.
以上是大佬教程为你收集整理的Angular2 – OnInit:从Service’subscribe函数返回的值未分配给Component字段/ s全部内容,希望文章能够帮你解决Angular2 – OnInit:从Service’subscribe函数返回的值未分配给Component字段/ s所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。