簡體   English   中英

如何在Angular 2中的promise中調用類方法?

[英]How can I call a class method inside a promise in Angular 2?

如果我有一個Angular 2組件,並且我從返回異步promise或observable的服務獲取數據,那么我如何調用組件中的方法來顯示該數據?

@Component({
  moduleId: module.id,
  selector: 'charts',
  templateUrl: 'charts.component.html',
  providers: [DataService]
})
export class ChartsComponent implements OnInit {

  constructor(private dataService:DataService)

  ngOnInit() {
    this.getData();
  }

  getData(){
    this.dataService.getData().then(function (data) {
      this.drawChart(data);
    });
  }

  drawChart(){
     //implement drawing chart
  }
}

問題是在“this.drawChart()”中的promise“this”內部不再引用ChartsComponent類。 如何調用類方法發布承諾?

另外,我不能將drawChart()放在promise中,因為它需要使用其他類屬性。

當您使用箭頭鍵的功能 ,在this保持:

getData(){
  this.dataService.getData().then((data) => { // <-- changed here
    this.drawChart(data);
  });
}

有兩種解決方案:

1)使用“自我”:

     var self = this;
     ngOnInit() {
        self.getData();
     }

     getData(){
        self.dataService.getData().then(function (data) {
        self.drawChart(data);
     });

}

2)使用“綁定方法”(或類似的東西):

.then(function (data) {
        this.drawChart(data);
     }).bind(this)

您可以找到有關此方法的大量信息,例如: 使用JavaScript“bind”方法

我更喜歡第一種解決方案,因為它有助於使代碼更加透明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM