在Angular2中,我有一個使用服務將文件上傳到Amazon S3的組件。如何在回調函數中保留'this'實例
我的組分(簡化):
private _loading = true;
// use service to upload file
this._s3service.uploadFile(fileObject, this.uploadCallback)
// use this function as a callback
uploadCallback(err, data) {
this._loading = false; // this crashes because of 'this' is referring to service instead of component
}
我的服務(簡化):
private getS3(): any {
// Get or create AWS instance
return s3;
}
public uploadFile(selectedFile, callback): boolean {
this.getS3().upload({
Key: key_name,
ContentType: file.type,
Body: file,
StorageClass: 'STANDARD',
ACL: 'private'
}, function(err, data){ // <=== What to do here?!
callback(err, data)
});
}
的問題是,當所述回調函數從服務觸發,this
指的是服務和this._loading
無法找到。
問:我怎樣才能保持this
比如在我的回調函數,(this
在回調必須指向component
而不是service
)
可能的解決方法也可能是使用實例函數的https:// github上。 com/Microsoft/TypeScript/wiki /%27this%27-in-TypeScript#use-instance-functions – yurzui