EXCEPTION:评估"点击"

时间:2016-01-28 08:28:34

标签: angularjs typescript angular

这是我的第一步创建angular2与打字稿,我需要帮助。 第一个请求运作良好,我会展示它。 当我点击时,我想创建一个新的请求。 我怎么能这样做?

 export class App {
  img: Array<Object>;
  constructor(http:Http) {    http.request('http://boroviha.dev.ooosis.com/api/client/get_photo_sections.php').toRx().subscribe(res => {
      console.log('img',res.json().data);
      this.img = res.json().data;
    });
  }
    onSelect(item: img) { this.selectedItem = item; console.log(item);
     constructor(http:Http) {
     this.http.request('http://localhost:3001/api/random-quote')
        .map(res => res.text())
        .subscribe(
          data => this.randomQuote = data,
          err => this.logError(err),
          () => console.log('Random Quote Complete')
        );
     }
    }
}
bootstrap(App, [HTTP_BINDINGS, bind(RequestOptions).toClass(MyOptions)])
  .catch(err => console.error(err));

1 个答案:

答案 0 :(得分:0)

您在onSelect方法中定义了一个有点奇怪的构造函数:

onSelect(item: img) { this.selectedItem = item; console.log(item);
  constructor(http:Http) {
  (...)

我会将此重构为类似的东西:

export class App {
  img: Array<Object>;
  constructor(private http:Http) {    
    (...)
  }

  onSelect(item: img) {
    this.selectedItem = item; console.log(item);
    this.http.get('http://localhost:3001/api/random-quote')
        .map(res => res.text())
        .subscribe(
          data => this.randomQuote = data,
          err => this.logError(err),
          () => console.log('Random Quote Complete')
        );
    }
  }
}

我在构造函数参数级别添加了private,以使http类的App参数成为一部分。因此,您可以将其与this关键字一起使用。

您可以注意到,现在应该使用HTTP_PROVIDERS代替HTTP_BINDINGS

希望它可以帮到你, 亨利