ngx-admin/src/app/global.state.ts
nixa 5b7c132eac feat(rc5): update to angular rc.5
- NgaModule - module wrapper for all ng2-admin custom features
- Ng Module per page
- async components load
- menu moved (again) to a separate file (as now each module has its own route file)
- no need to import Ba* directives into the pages which have NgaModule in the import statement
2016-08-30 14:34:53 +03:00

43 lines
1 KiB
TypeScript

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class GlobalState {
private _data = new Subject<Object>();
private _dataStream$ = this._data.asObservable();
private _subscriptions: Map<string, Array<Function>> = new Map<string, Array<Function>>();
constructor() {
this._dataStream$.subscribe((data) => this._onEvent(data));
}
notifyDataChanged(event, value) {
let current = this._data[event];
if (current !== value) {
this._data[event] = value;
this._data.next({
event: event,
data: this._data[event]
});
}
}
subscribe(event: string, callback: Function) {
let subscribers = this._subscriptions.get(event) || [];
subscribers.push(callback);
this._subscriptions.set(event, subscribers);
}
_onEvent(data: any) {
let subscribers = this._subscriptions.get(data['event']) || [];
subscribers.forEach((callback) => {
callback.call(null, data['data']);
});
}
}