I have an Electron app using Angular 2. The app works fine until a load data from a local JSON file using ipcRenderer. Then buttons which act on data in a service no longer trigger change detection process to update the view. I created a simplified example app which demonstrates the problem here: https://github.com/marshmellow1328/electron-angular-change-detection
I have no clue why the button stops triggering the native change detection. Having to add ChangeDetectorRef seems like it shouldn't be necessary. If it is, I'd like to understand why.
I investigated your issue and determined that it happens because
readFile
handler is executed outside angular zone. So, it won't react on your click event because you left zone responsible for change detection.What's the easiest solution for that?
app.component.ts
and then you can get rid of
this.changeDetector.detectChanges();
With
zone.run(...)
you explicitely make code execute inside Angulars zone and change detection is run afterwards.One more advice:
I noticed reduntant code in your
app.component.ts
like:You can just rewrite it like:
Hope this helps you!