feature(events): add events api to angular package

This commit is contained in:
Dan Bucholtz
2017-12-22 14:51:17 -06:00
parent b2d60f3b7f
commit a0688886d9
3 changed files with 36 additions and 0 deletions

View File

@ -7,6 +7,7 @@ export { IonNavDelegate } from './components/ion-nav';
export { ActionSheetController, ActionSheetProxy } from './providers/action-sheet-controller';
export { AlertController, AlertProxy } from './providers/alert-controller';
export { App } from './providers/app';
export { Events } from './providers/events';
export { LoadingController, LoadingProxy } from './providers/loading-controller';
export { ModalController, ModalProxy } from './providers/modal-controller';
export { NavController } from './providers/nav-controller';

View File

@ -19,6 +19,7 @@ import { IonNavDelegate } from './components/ion-nav';
import { ActionSheetController } from './providers/action-sheet-controller';
import { AlertController } from './providers/alert-controller';
import { AngularComponentMounter } from './providers/angular-component-mounter';
import { Events } from './providers/events';
import { LoadingController } from './providers/loading-controller';
import { ModalController } from './providers/modal-controller';
import { PopoverController } from './providers/popover-controller';
@ -56,6 +57,7 @@ export class IonicAngularModule {
AlertController,
ActionSheetController,
AngularComponentMounter,
Events,
LoadingController,
ModalController,
PopoverController,

View File

@ -0,0 +1,33 @@
import { Injectable } from '@angular/core';
import { ensureElementInBody, hydrateElement } from '../util/util';
let hydratedElement: HTMLIonEventsElement = null;
@Injectable()
export class Events {
publish(topic: string, event?: any): Promise<any> {
return getElement().then((element: HTMLIonEventsElement) => {
return element.publish(topic, event);
});
}
subscribe(topic: string, handler: (event?: any) => void) {
return getElement().then((element: HTMLIonEventsElement) => {
return element.subscribe(topic, handler);
});
}
}
function getElement(): Promise<HTMLIonEventsElement> {
if (hydratedElement) {
return Promise.resolve(hydratedElement);
}
const element = ensureElementInBody(ELEMENT_NAME);
return hydrateElement(element).then((element: HTMLIonEventsElement) => {
hydratedElement = element;
return element;
});
}
const ELEMENT_NAME = 'ion-events';