Dies ist eine Unterbrechungsänderung von Javascript / Typoskript.
Sie müssen lediglich "event.target.result" durch "this.result" ersetzen.
"this" bezieht sich hier auf den Kontext der Schnittstelle "MSBaseReader".
Unten ist mein Implementierungsauszug:
let reader = new FileReader();
let profile: TransProfile = new TransProfile();
reader.onload = function(event){
profile.avatar = new Uint8Array(this.result);
}
reader.onerror = function(event){
}
this.photoLib.getPhoto(item)
.then(blob => reader.readAsArrayBuffer(blob))
.then(() => this.doUpload(profile));
Definition der "MSBaseReader" -Schnittstelle:
interface MSBaseReader {
onabort: (this: MSBaseReader, ev: Event) => any;
onerror: (this: MSBaseReader, ev: ErrorEvent) => any;
onload: (this: MSBaseReader, ev: Event) => any;
onloadend: (this: MSBaseReader, ev: ProgressEvent) => any;
onloadstart: (this: MSBaseReader, ev: Event) => any;
onprogress: (this: MSBaseReader, ev: ProgressEvent) => any;
readonly readyState: number;
readonly result: any;
abort(): void;
readonly DONE: number;
readonly EMPTY: number;
readonly LOADING: number;
addEventListener<K extends keyof MSBaseReaderEventMap>(type: K, listener: (this: MSBaseReader, ev: MSBaseReaderEventMap[K]) => any, useCapture?: boolean): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
}
Definition der "FileReader" -Schnittstelle
interface FileReader extends EventTarget, MSBaseReader {
readonly error: DOMError;
readAsArrayBuffer(blob: Blob): void;
readAsBinaryString(blob: Blob): void;
readAsDataURL(blob: Blob): void;
readAsText(blob: Blob, encoding?: string): void;
addEventListener<K extends keyof MSBaseReaderEventMap>(type: K, listener: (this: FileReader, ev: MSBaseReaderEventMap[K]) => any, useCapture?: boolean): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
}
Beachten Sie auch, dass aufgrund der Kontextänderung von "this" in "onload ()" auf Ihre klassenbasierten Definitionen in "reader.onload = function (event) {..." nicht zugegriffen werden kann. Dies bedeutet, dass Sie den Stil "this.class-property" nicht verwenden können, um Ihre Klasseneigenschaften zu adressieren.
Sie müssen eine lokale Variable definieren. Siehe die Definition und Verwendung von "Profil" im obigen Auszug.