functionOnPrinterStateChanged(state){var evt =newCustomEvent('printerstatechanged',{ detail: state });
window.dispatchEvent(evt);}
NOTE that above is not supported in IE (even IE 11), so use this instead:

MinGW, a contraction of “Minimalist GNU for Windows”, is a minimalist development environment for native Microsoft Windows applications. MinGW provides a complete Open Source programming tool set which is suitable for the development of native MS-Windows applications, and which do not depend on any 3rd-party C-Runtime DLLs. (It does depend on a number of DLLs provided by Microsoft themselves, as components of the operating system; most notable among these is MSVCRT.DLL, the Microsoft C runtime library. Additionally, threaded applications must ship with a freely distributable thread support DLL, provided as part of MinGW itself).

Both RxJS and Redux try to solve the same problem of handling state in the app changed by different components and sync/async actions.

While RxJS tries to handle AEg https://github.com/wbuchwalter/ng2-redux)synchrony of actions as streams, Redux converts all async/sync actions to Sync via the Action Dispatcher and Reducer (that simply takes the action and current state to generate new state)

That said, with Redux, there still is a place for RxJS when making n/w calls etc coz that’s how Angular 2 works by default (http svc returns observable). But apart from that, there isn’t much use of RxJS when using Redux (Eg https://github.com/wbuchwalter/ng2-redux)

When using immutable data structures from ImmutableJS etc. in Angular 2 code, we can be sure that the values of properties in our objects will never change and whenever any prop needs to be changed, the library (like ImmutableJS) will create a fresh object and return the reference to it to us.

Hence, we can tell angular’s change detection strategy to not trigger until the reference to the bound object (object bound b/w template and model of Component) changes. This makes it way faster…