Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类变量的angular2 http响应设置_Angular_Ionic2_Angular2 Services - Fatal编程技术网

类变量的angular2 http响应设置

类变量的angular2 http响应设置,angular,ionic2,angular2-services,Angular,Ionic2,Angular2 Services,我正在进行http调用以从本地json文件获取数据。由于延迟接收响应,我无法在模板上显示响应数据 服务正在进行HTTP调用以从json文件获取数据 export class DataBook { bookDetails: Array<Object>; constructor(public http: Http) { this.bookDetails = []; } makeDataReady(){ this.http.get('assets

我正在进行http调用以从本地json文件获取数据。由于延迟接收响应,我无法在模板上显示响应数据

服务正在进行HTTP调用以从json文件获取数据

export class DataBook {

  bookDetails: Array<Object>;

  constructor(public http: Http) {
      this.bookDetails = [];

  }

  makeDataReady(){
    this.http.get('assets/preloaded-data/booksummaries.json')
                  .map(res => res.json())
                  .subscribe(
                            data => this.bookDetails = data,
                            error => alert(error),
                            () => console.log(this.bookDetails) //output the json file content
                            );
  }

  appendBook(book:Object)
  {
    this.bookDetails.push(book);
  }

  getBooks():Array<Object>
  {
    return this.bookDetails;
  }


}

我是安格拉尔的新手。我很难理解为什么响应会延迟?

我自己找到了解决方案。我刚刚在
this.bookDetails=[]之后在提供者或服务构造函数中进行了http调用类似

constructor(public http: Http) {
    this.bookDetails = [];
    this.init();

}


init(): void {
    this.http.get('assets/preloaded-data/booksummaries.json')
        .map(res => res.json())
        .subscribe(
            data => this.bookDetails = data,
            error => alert(error),
            () => console.log(this.bookDetails) //output the json file content
        );
}

它很好用。无论如何,谢谢大家

不建议在构造函数中放置Http调用(有关详细信息,请参阅此-)

如果你把它放在ngOnInit或ionViewDidLoad中,它不应该引起任何空间延迟——试试看


此外,在您的代码示例中,构造函数出现在第二位(在ngOnInit之后)——它不会导致错误,但它非常不标准

我把HTTP调用放在ngOnInit中,它停止工作了;我不能在那里使用ngOnInit
constructor(public http: Http) {
    this.bookDetails = [];
    this.init();

}


init(): void {
    this.http.get('assets/preloaded-data/booksummaries.json')
        .map(res => res.json())
        .subscribe(
            data => this.bookDetails = data,
            error => alert(error),
            () => console.log(this.bookDetails) //output the json file content
        );
}