首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角5数据请求

角5数据请求
EN

Stack Overflow用户
提问于 2018-04-10 08:14:15
回答 2查看 60关注 0票数 0

我已经构建了一个具有角5和Java的应用程序。

目前,我遇到的问题是无法将接收到的数据从我的数据服务中提取出来。

这是我的数据服务:

代码语言:javascript
复制
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http'

import 'rxjs/add/operator/toPromise';

import { Observable } from 'rxjs/Observable';

@Injectable()
export class DataService {

  constructor(private http: HttpClient) { }

  getClasses(): Observable<any> {
    return this.http.get('//localhost:8080/classes');
  }
}

这是我想要放置数据的组件:

代码语言:javascript
复制
import { Component, OnInit } from '@angular/core';

import { DataService } from '../data.service';

@Component({
  selector: 'app-classes',
  templateUrl: './classes.component.html',
  styleUrls: ['./classes.component.css']
})
export class ClassesComponent implements OnInit {

  classes: Array<any>;

  constructor(private dataService: DataService) { }

  ngOnInit() {
    this.getClasses();
  }

  getClasses(): void {
    this.dataService.getClasses().subscribe(data => {this.classes = data});
  }
}

这就是我从console.log(数据)获得的信息:

代码语言:javascript
复制
(3) [{…}, {…}, {…}]
0: {version: null, id: 1, name: "3AHIT"}
1: {version: null, id: 2, name: "4AHIT"}
2: {version: null, id: 3, name: "5AHIT"}
length: 3
__proto__: Array(0)

这是来自console.log(this.classes)的文章:

代码语言:javascript
复制
undefined

我将本教程用于我的应用程序:https://developer.okta.com/blog/2017/12/04/basic-crud-angular-and-spring-boot

我没有发现任何帮助我的东西,我希望有人能在这里帮助我。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-10 08:28:23

您的getClasses()方法是一个async函数,所以如果您试图在ngOnInit中使用console.log(this.classes),那么在调用this.getClasses()之后,它就会返回undefined,因为您的console.log在后端调用得到解决之前就会被触发。

因此,如果要检查classes变量的值是否已经更新,则应该在方法的subscribe中这样做。像这样的事:

代码语言:javascript
复制
getClasses(): void {
    this.dataService.getClasses().subscribe(data => {
    this.classes = data;
    console.log(this.classes);
   });
}

这样,一旦对后端的调用已被解决,您就可以确保记录变量。

票数 1
EN

Stack Overflow用户

发布于 2018-04-10 08:22:51

数据在您的订阅中被撤回。IE:

代码语言:javascript
复制
        this.dataService.getClasses().subscribe(data => {
        this.classes = data;
        console.log(this.classes); // <--- this will log your data
        //call a function with this.classes for exemple here
        });

如果在订阅结果之外使用this.classes,则由于请求尚未完成,因此将未定义它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49748607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档