【发布时间】:2018-01-14 11:56:04
【问题描述】:
我有一个以前运行良好的 Angular 4.3 + Cordova 应用程序。但是现在,我在应用启动时出现空白屏幕,并且什么也没有发生。
挖掘了一段时间后,我意识到它来自哪里:
我的主页受到CanActivate 保护,如果这是第一次运行或缺少所需的首选项,它将检查一些文件系统持久的首选项并将用户重定向到另一个页面,以填写必需的属性。
所以应用程序的启动取决于我的CanActivate 守卫,而PreferenceService 本身又取决于我自己实现的FileSystemService。问题是,当我尝试读取存储用户首选项的文件时,没有触发任何回调,没有任何反应,甚至没有错误。
这是我的FileSystemService 中没有任何错误的部分:
read(file: FileEntry, mode: "text" | "arrayBuffer" | "binaryString" | "dataURL" = "text"): Observable<ProgressEvent> {
return this.cdv.ready.flatMap(() => {
return Observable.create(observer => {
file.file(file => {
let reader = new FileReader();
reader.onerror = (evt: ErrorEvent) => {
this.zone.run(() => observer.error(evt)); //never triggered
};
reader.onload = (evt: ProgressEvent) => {
this.zone.run(() => observer.next(evt)); //never trigerred
};
switch (mode) {
case "text":
reader.readAsText(file);
break;
case "arrayBuffer":
reader.readAsArrayBuffer(file);
break;
case "binaryString":
reader.readAsBinaryString(file);
break;
case "dataURL":
reader.readAsDataURL(file);
break;
}
});
});
});
}
为什么会发生这种情况,我该如何处理才能触发我的回调?
【问题讨论】:
标签: angular cordova filereader zone.js