Angular 2 - 从http.get获取json文件名

时间:2017-04-27 13:13:08

标签: angular http

在服务器目录中,我有一个json文件列表。我需要将每个json filename 导入到字符串或其他结构数组中的angular 2组件中。

我尝试使用此服务为Web服务器创建一个http.get。

export class AnUtenteService {
   getFiles() : Observable<string[]> {
      return this.http.get(directory)
         .map(this.extractData)
         .catch(this.handleError);
   }

   private extractData(res: Response) {
      let body = res.json();
      return body.data || { };
   }
   private handleError (error: any) {
   let errMsg = (error.message) ? error.message :
   error.status ? `${error.status} - ${error.statusText}` : 'Server error';
   console.error(errMsg); // log to console instead
   return Observable.throw(errMsg);
  } 
}

但是当我在我的组件中调用anutenteservice.getFiles()时,我收到此错误: 意外令牌&lt;在位置0的JSON中。 这是我的组件

export class OrderslistComponent{
  newsList; 
  errorMessage;
  constructor(private anutenteservice: AnUtenteService,  private http: Http)
  {}
  ngOnInit() {
     this.anutenteservice.getFiles()
     .subscribe(data => this.newsList = data,
                error => this.errorMessage = <any>error);
  }

}

我不明白错误在哪里。我该怎么办?

1 个答案:

答案 0 :(得分:0)

尝试做这个结构:

export class OrderslistComponent {
    newsList;
    errorMessage;

    constructor(private anutenteservice: AnUtenteService) {
        this.anutenteservice.getFiles.subscribe((data) => {
                this.newsList = data;
            }
        );
    }

    ngOnInit() {
    }    
}

并将Http添加到您的服务类。将其添加到您的服务类:

constructor(private http: Http) {
}

更新1:

尝试更改类型,此处:

  private extractData(res: Response) {
      let body = res.text();
      return body.data || { };
   }

如果您的回复类型不是JSON