У меня проблемы с событиями electronic- angular (полностью angular новичок) ip c. Вот мой код:
Electronhelper.service.ts
import { Injectable, NgZone } from '@angular/core';
import { ElectronService } from 'ngx-electron';
@Injectable({
providedIn: 'root'
})
export class ElectronhelperService {
appSettings: any;
constructor(private electron: ElectronService){
this.fetchAllSettings() ;
}
fetchAllSettings(){
this.electron.ipcRenderer.send('fetch:Settings') ;
this.electron.ipcRenderer.once('fetch:Settings::recieved', (event, data) => {
this.appSettings = data[0];
});
}
}
main. js (электронный процесс, здесь все работает нормально)
ipcMain.on('fetch:Settings', () => {
console.log('got on method')
win.webContents.send('fetch:Settings::recieved', [settings])
}) ;
Теперь, если вы используете вышеуказанный сервис в другом компоненте или другом сервисе в качестве зависимости в их соответствующих конструкторах, тогда, когда я хочу получить доступ к this.appSetting
в electronichelper.service.ts, он всегда остается неопределенным. Например:
appconfig.service.ts
import { Injectable } from '@angular/core';
import { Settings } from '../interface/settings' ;
import { ElectronhelperService } from './electronhelper.service';
@Injectable({
providedIn: 'root'
})
export class AppconfigService {
settings: Settings ;
constructor(private helper: ElectronhelperService){
console.log(this.helper.appSettings) ; // this returned as undefined
}
}
Я знаю, что события ip c являются асинхронными c, но как я могу обрабатывать их внутри этих служб. Также настройки приложения берутся из пакета электронного магазина npm.