简体   繁体   English

Angular2 rxjs调用以获取REST API并获取未定义的输出

[英]Angular2 rxjs call to rest api and get undefined output

I have problem with my Angular2 service. 我的Angular2服务有问题。 My function call to rest server, next I would like to print output but console.log shows undefined . 我的函数调用rest服务器,接下来我想打印输出,但是console.log显示undefined

Main class 主班

export class EventListComponent implements OnInit {
  events: Event[];

  constructor(
    private eventService: EventService
  ) {}

  loadPosts() {
    console.log('loading');
    this.eventService.getEvents()
      .subscribe(
        events => this.events = events,
        err => {
          console.log(err);
        });
    console.log(this.events); // undefined
  }

  ngOnInit() {
    // Load comments
    this.loadPosts();
  }
}

And EventService 和EventService

@Injectable()
export class EventService {

  private eventsUrl = 'http://localhost:5000/search';

  constructor(private http: Http) {}

  getEvents(): Observable<Event[]> {

    return this.http.get(this.eventsUrl)
      .map((res: Response) => res.json())
      .catch((error: any) => Observable.throw(error.json().error || 'Server error'));
  }

}

Whats is wrong? 怎么了

You're logging this.events before it is set. 您在设置之前记录this.events Do: 做:

  loadPosts() {

    this.eventService.getEvents()
      .catch(err => console.log(err))
      .subscribe(
        events => {
          this.events = events; 
          console.log(this.events);
      });
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM