In Angular2 Ich habe eine Komponente, die einen Dienst zum Hochladen einer Datei auf Amazon S3 verwendet.So bewahren Sie die 'This' Instanz in einer Callback-Funktion
Meine Komponente (vereinfacht):
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
}
Mein Service (vereinfacht):
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)
});
}
Das Problem, dass, wenn die Callback-Funktion aus dem Dienst entlassen wird, wird this
auf den Dienst bezieht und this._loading
kann nicht gefunden werden.
Frage: Wie kann ich die this
Instanz in meiner Callback-Funktion erhalten, (this
in dem Rückruf zu component
und nicht service
zeigen muss)
Mögliche Lösung könnte sein, auch Instanz Funktion https: // GitHub. com/Microsoft/TypeScript/wiki /% 27dies% 27-in-TypeScript # use-instance-Funktionen – yurzui