我有一個運行在Electron上的Angular 4應用程序。角2沒有更新*有時*
在我的主要組件中,我運行了一個服務,它打開一個保存的文件並將其參數設置爲名爲「會話」的對象。
ngOnInit(): void {
this.Service.ready.subscribe(() => {
this.session = this.Service.session;
console.log(this.session.name)
});
this.Service.startService();
}
我要麼使用文件對話框打開會話文件,要麼在初始化應用程序時加載上一個會話文件。我通過訂閱我的服務在完成加載文件時發出的'就緒'事件來更新我的用戶界面。請注意,對於打開最近的文件並使用對話框加載文件,它都運行相同的方法。
問題: 當通過對話框打開文件文件時,UI get立即更新。在啓動時加載最後一個會話時,UI不會更新。
我試過了什麼 該服務使用NgZone觸發變化檢測。 該訂閱顯示正確的會話設置爲變量'this.session' 我試過使用ChangeDetectorRef但沒有區別。
當我使用相同的方法和事件觸發它時,爲什麼變化檢測有差異?它是否與正在初始化的組件有關?
更新展示區在服務更新
從我的服務:
loadSession(path: string): void {
fs.readFile(path, { encoding: 'utf-8' }, (err, data) => {
if (!err) {
var session = JSON.parse(data);
console.log(session);
this.zone.run(() => {
this.session = session;
this.readyToStart();
this.notify("Opened Session:", this.session.name, null);
console.log("opened session");
});
} else {
console.log(err);
}
});
}
我readyToStart方法發出 '就緒' 事件
'該服務使用NgZone觸發更改檢測。「它看起來如何? – yurzui
已更新服務代碼 – WJM
您是否看到console.log(this.session.name)輸出? –