Javascript 不存在属性的角度2接口抛出错误

Javascript 不存在属性的角度2接口抛出错误,javascript,angularjs,Javascript,Angularjs,我有一个棱角分明的2界面books.ts export interface Books { artists: Object; tracks: Object; } import { Injectable } from '@angular/core'; import { Http, Response, Headers, RequestOptions } from '@angular/http'; import { Observable } from 'rxjs/Observable'; impor

我有一个棱角分明的2界面books.ts

export interface Books {
artists: Object;
tracks: Object;
}
import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { Books } from 'app/pages/search-results/books';
import 'rxjs/add/operator/map'

@Injectable()
export class SearchService {

constructor(private _http:Http) { }


 getBook(keyword): Observable<Books[]>{
  return this._http.get('https://api.spotify.com/v1/search?q=' + keyword + '&type=track,artist')
  .map((response: Response) => <Books[]> response.json());
 }
}
这是我的服务文件,我将它与http请求一起使用searchService.ts

export interface Books {
artists: Object;
tracks: Object;
}
import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { Books } from 'app/pages/search-results/books';
import 'rxjs/add/operator/map'

@Injectable()
export class SearchService {

constructor(private _http:Http) { }


 getBook(keyword): Observable<Books[]>{
  return this._http.get('https://api.spotify.com/v1/search?q=' + keyword + '&type=track,artist')
  .map((response: Response) => <Books[]> response.json());
 }
}

我不确定,但我想你是想从藏书中找到艺术家。您可以通过检查或例如res[0].artist来获取具体的艺术家。

类SearchService中的getBook函数返回一个Books对象数组(Books[]) 因此,SearchResultsComponent中的res in getBooks函数将是一个书籍数组


您可以
console.log(res)
查看详细信息,如果您想访问美工人员,请尝试使用
res[0]。美工人员
如果res不是空数组

问题是我得到了对象的响应,并且我正在将其分配给导致错误的数组。我只是将这两种类型都更改为object,它解决了我的问题

由此

books: Books[];
对此

books: Books;

执行
console.log(res)时记录的数据是什么
@anoop它显示{artists:{limit:20,item:[]},tracks:{limit:20,item:[]}我认为对console.log进行注释并不能为您解决问题,因为您获得了对象并试图使用
数组映射
,请尝试将其更改为
this.books=[res]可能在response.json之前尝试删除