2017-08-06 22 views
0

我尝试从API获取成员时出现问题。显然,请求正常工作,但角度未能将结果获取到成员对象或类似的东西。我真的不明白它引发的错误。Angular - 具有承诺的问题无法找到类型为“object”的不同支持对象'[object Object]'

到目前为止,它是一个基本的应用程序,只需从API中获取成员并将其显示在内联模板中即可。

这里是我的服务:

import { Headers, Http, Response } from '@angular/http'; 
import { MEMBERS } from './../member-mock'; 
import { Member } from './../member'; 
import { Injectable } from '@angular/core'; 

import 'rxjs/add/operator/toPromise'; 

@Injectable() 
export class MemberService { 
    private apiUrl = '../api/members'; 
    private headers = new Headers({'Content-Type': 'application/json'}); 
    constructor(private http: Http){} 
    members : Member[] = []; 
    getMembers(){ 
     return this.http.get(this.apiUrl) 
     .toPromise() 
     .then(response => response.json().data as Member[]) 
     .catch(this.handleError); 
    } 
} 

而且我的组件

import { ModalService } from './../Services/modal-service'; 
import { OrderService } from './../Services/order-service'; 
import { Member } from './../member'; 
import { MemberService } from './../Services/member-service'; 
import { Component } from '@angular/core'; 

@Component({ 
    selector: 'member-pane', 
    template: ` 
    <div class='order-pane'> 
     <h2>Membres</h2> 
     <ul class=""> 
     <li class="membre" *ngFor="let member of members"> 
      <b>{{member.prenom}} {{member.nom}} 
     </li> 
     </ul> 
    </div> 
    `, 
    styleUrls: ['./member-pane.css'] 
}) 
export class MemberPaneComponent { 
    constructor(private memberService: MemberService) { } 

    members = this.memberService.getMembers(); 
} 

而且它提高了下面的错误,我不明白: Error screenshot

最后这里是JSON由API返回:

[ 
    { 
     "id": 1086, 
     "prenom": "Mick", 
     "nom": "Mal", 
     "amount": 0, 
     "total": 0 
    }, 
    { 
     "id": 1087, 
     "prenom": "Loic", 
     "nom": "Pal", 
     "amount": 0, 
     "total": 0 
    } 
] 
+0

还在磨砺我的angular2 +技能,但是这条线扰了我'resp onse => response.json()。data as Member []'。我觉得你正在包装已经是一个阵列。如果你只有'response => response.json()。data'?这看起来与1.x中的$ http的response.data最接近.. – Brian

+0

另外,我已经将angularjs标记更改为angular,因为AngularJS用于1.x straing,而AngularJS用于2+。 (AngularJS:https://stackoverflow.com/tags/angularjs/info),(Angular:https://stackoverflow.com/tags/angular/info)。 – Brian

回答

0

您回应没有一个data属性,但是是一个数组,所以你应该回到它原来的样子:

getMembers(){ 
    return this.http.get(this.apiUrl) 
    .toPromise() 
    .then(response => response.json() as Member[]) // remove 'data' 
    .catch(this.handleError); 
} 

,改变从获取数据:

members = this.memberService.getMembers(); 

this.memberService.getMembers() 
    .then(members => this.members = members) 
相关问题