当前位置: 首页 > 知识库问答 >
问题:

Angular组件未从服务加载数据[复制]

滕祯
2023-03-14

我试图从一个服务加载一些数据,该服务在控制台中测试时工作,它正确地显示了所需的数组,但当从我的组件调用服务的相同方法时(我需要呈现数据),它只显示[object]。。。。在控制台中,组件本身上没有任何内容。

仅供参考:正在使用的提供商(/api/departement)正常工作,因为数据可以显示在控制台中(来自服务本身的数据)。

这是我的代码:

Department.ts:

export class Departement{
public code_dep:String;
public lib_dep_AR:String;
public lib_dep_FR:String;
public countm:number;
}

Departement.service.ts

import { Departement}  from './departement';
import { Http,Headers } from '@angular/http';
import 'rxjs/add/operator/toPromise';
import { Injectable } from '@angular/core';
@Injectable()
export class DepartementService{

constructor(private http:Http){}
private headers = new Headers({'Content-type':'application/json'});
private depUrl = '/api/departement';

getAllDeps():Promise<Departement[]>{

    return this.http.get(this.depUrl + "/allDeparts").toPromise().
    then(response=>response.json() as Departement[]);  

  }
// etc
}

显示.component.ts

  export class Displaying implements OnInit {
  departements:Departement[];
  departement:Departement;
  constructor(public depserv:DepartementService,public router:Router) {

   }

  ngOnInit() {
    this.depserv.getAllDeps().then(dep =>    
      {    this.departements = dep;
       });

    //etc  
  }

我想在那里呈现结果

html prettyprint-override"><select name="budget" >     
 <option>my results down here</option>            
 <option *ngFor="let x of departements">{{x.lib_dep_FR}}</option>
</select>

通过移动到可观察界面进行修复

服务部

private extractData(res:Response) {
    let body = res.json();
    return body || [];
}
getData():Observable<Departement[]>{
    return this.http.get(this.depUrl+"/allDeparts").map(this.extractData).catch(this.handleError);
}

赶上displaying.component.ts的结果

ngOnInit(){
    this.depserv.getData().subscribe(
   dept => this.departements = dept);
}

共有1个答案

花博厚
2023-03-14

displaying.component.ts文件中,而不是这个this.departements=dep;更改为这个this.departements=dep.json();,然后检查你得到了什么在console.log(this.departements)中,如果你得到对象数组或值数组,那么数据将来自x.lib_dep_FR

 类似资料:
  • 问题内容: 我无法通过本地主机或其他方式让ui.router在index.html上加载组件: index.html components.js “ Hello world”加载,当我使$ http通过服务时的数据也加载。但是它不会传递给组件。有什么想法吗? 问题答案: 可从中获取属性(请参阅此处和CHANGELOG.MD-已在中添加),因此不可用。 这是工作的jsFiddle(带有1.0.3-b

  • 问题内容: 我在将服务中的数据填充到视图中时遇到问题。我有这样定义的服务 和我的控制器 如果我从控制器使用$ http.get,数据将很好地填充,但是,如果我尝试从服务中调用数据,那么我什么也不会得到。我知道查询是异步的,但是我很难理解一旦返回数据就如何填充$ scope变量。我可以使用$ rootscope广播事件并在控制器中侦听它,但这似乎并不是完成此事件的正确方法。对于如何正确执行此操作的任

  • 使用服务在Angular 2应用程序中存储(和共享)初始值的最佳实践是什么?我有一个从服务器加载大量数据的服务,比如资源、配置以及其他数组和对象。我不想在每次加载组件或路由到视图时都加载这些数据,我只想使用应用程序启动时已经加载的这些对象和数组,并在需要时选择重新加载。问题是存储这些值的正确位置在哪里,以及如何在使用该服务的组件之间共享这些值?谢了。

  • 我有一个包含会员信息的服务。这里的一个变量是团队字符串。 在我的组件中,我调用服务方法将信息放在变量中,然后在组件中显示它。 我想用服务中团队的唯一列表填充组件中的变量“teams”。这应该考虑到编写(因此我将使用toUpperCase()。 我的服务: 我的组成部分:

  • 问题内容: 我是Angular的新手(也是Java语言)。我已经编写了一个Angular服务,该服务返回一个用户数组。从HTTP调用检索数据,该HTTP调用以JSON格式返回数据。记录从HTTP调用返回的JSON数据时,可以看到此调用成功,并且返回了正确的数据。我有一个调用服务以获取用户的组件和一个显示用户的HTML页面。我无法从服务到组件获取数据。我怀疑我使用的Observable错误。也许我也

  • 我有一个类用来上传文件作为服务,比如symfony文档。https://symfony.com/doc/current/controller/upload_file.html#creating-上传服务 我使用Symfony 5。 当我在main config/services.yaml中声明服务时,这项工作正常。 但是我有一个文件管理包,我想把服务声明放在这个包中:App/AD/Explorer