qligier / angular4-events

Events is a publish-subscribe style event system based on sqlProvider/angular2-pubsub
7 stars 4 forks source link

Events Service for Angular

Events is a publish-subscribe style event system based on sqlProvider/angular2-pubsub and modified to be similar to ionic-angular/Events.

Usage

import { EventsModule } from 'angular4-events';

@NgModule({ declarations: [ ... ], imports: [ ... EventsModule.forRoot() ] })

...

 - And import service wherever you want

## Documentation

#### Class Overview

```typescript
declare class EventsService {
    private events: Object;
    publish(event: string, eventObject?: any): void;
    subscribe(): undefined;
    subscribe(event: string): Observable<any>;
    subscribe(event: string, callback: (value: any) => void): Subscription;
    subscribe(event: string, callback: (value: any) => void, error: (error: any) => void): Subscription;
    subscribe(event: string, callback: (value: any) => void, error: (error: any) => void, complete: () => void): Subscription;
}

EventsService.publish(event: string, eventObject?: any): void

Publish event to all subscriber.

etc.

export class OverlayComponent implements OnInit, OnDestroy {
    constructor(private events: EventsService) { }

    anyFunc(){
        this.events.publish('pleaseCloseSidenav', 'helloIAmOverlay');
    }
}

EventsService.subscribe(event: string): Observable

Subscribe to channel.

etc.

export class NavigationComponent implements OnInit, OnDestroy {
    sideanvSub: any;

    constructor(private pubsub: EventsService) { }

    ngOnInit() {
        // usage of subscribe(event: string): <Observable<any>>;
        this.closeSidenavSub = this.pubsub.subscribe('pleaseCloseSidenav').subscribe((from) => {
            this.sidenavOpened = false;
        });

        // usage of subscribe(event: string, callback: (value: any) => void, error?: (error: any) => void, complete?: () => void): Subscription;
        this.openSidenavSub = this.pubsub.subscribe('pleaseOpenSidenav', (from) => {
            this.sidenavOpened = true;
        });
    }
    ngOnDestroy() {
        this.closeSidenavSub.unsubscribe();
        this.openSidenavSub.unsubscribe();
    }

Build the source

Follow the steps to run the tests and build the source code.

npm install
npm test
npm run build

Commands above will generate the ready to use bundles under the ./dist folder.