15.0.1 • Published 3 years ago
@felipeclopes/ngx-segment-analytics v15.0.1
ngx-segment-analytics
This Angular module provides an API for Segment using the analytics.js official library.
Installation
To install this library, run:
$ npm install --save ngx-segment-analyticsConsuming Segment
Add the SegmentModule to your Angular AppModule:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
// Import the Segment module
import { SegmentModule } from 'ngx-segment-analytics';
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    // Segment Importation
    SegmentModule.forRoot({ apiKey: 'YOUR_WRITE_APIKEY', debug: true, loadOnInitialization: true })
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }You can use the SegmentService in any constructor as a injected service :
import { Component, OnInit } from '@angular/core';
import { SegmentService } from 'ngx-segment-analytics';
@Component({
    selector: 'hero',
    templateUrl: './hero.component.html',
    styleUrls: ['./hero.component.css']
})
export class HeroComponent implements OnInit {
    constructor(private segment: SegmentService) { }
    public ngOnInit() {
        this.segment.track('load an hero')
            .then(() => console.log("Event sended"));
    }
    
}Documentation
A full documentation is available here
API
This API is compatible with analytics.js but returns Promises instead of taking callbacks in parameters.
load(apiKey: string, options: any);
get plugins: {[pluginName :string]: SegmentPlugin};
identify(userId?: string, traits?: any, options?: any): Promise<SegmentService>;
track(event: string, properties?: any, options?: any): Promise<SegmentService>;
page(category?: string, name?: string, properties?: any, options?: any): Promise<SegmentService>;
group(groupId: string, traits?: any): Promise<SegmentService>;
alias(userId: string, previousId?: string, options?: any): Promise<SegmentService>;
ready(): Promise<SegmentService>;
user(): any;
id(): any;
traits(): any;
reset(): void;
debug(enabled?: boolean): void;
on(method: string, callback: (event?: string, properties?: any, options?: any) => any): void;
trackLink(elements: HTMLElement | HTMLElement[], event: string | Function, properties?: Object | Function): void;
trackForm(forms: HTMLElement | HTMLElement[], event: string | Function, properties?: Object | Function): void;
timeout(timeout: number): void;Development
To lint all *.ts files:
$ npm run lintTo generate all *.js, *.d.ts and *.metadata.json files:
$ npm run buildTo publish on npmjs registry :
$ npm publish distLicense
MIT ©2017 OpenDecide