Featureflow Angular Service
Get your Featureflow account at featureflow.io
Using NPM
$ npm install --save featureflow-angular
-
add
FeatureflowAngularModule
to appNgModule
.import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { FeatureflowAngularModule } from 'featureflow-angular'; //... @NgModule({ declarations: [ //... ], imports: [ BrowserModule, FeatureflowAngularModule // FeatureflowAngularModule added ], providers: [], }) class MainModule {}
import { Component } from '@angular/core'; import { FeatureflowAngularService } from 'featureflow-angular'; @Component({ //... template: ` <div *ngIf="featureflowService.evaluate('my-feature-key').isOn()"> <h2>I will be seen when the feature is on</h2> <p>And this is some extra text</p> </div> <div *ngFor="let item of features | keyvalue"> {{item.key}}:{{item.value}} </div>` }) export class YourComponent { features: any; featureflow: any; constructor( private featureflowService: FeatureflowAngularService ) { featureflowService.init(API_KEY, {id: '1'}, null); this.features = featureflowService.getFeatures(); this.featureflow = featureflowService.client(); } }
-
That's it.
-
If you want to update your component when the evaluated feature changes in realtime, us featureChanged$ subscription from
featureflowService
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy } from '@angular/core'; import { Subscription } from 'rxjs'; @Component({ //... changeDetection: ChangeDetectionStrategy.OnPush // to make your app perform smooth and faster }) export class YourComponent { features: any; featureflow: any; updateFeatures: Subscription = null; constructor( //... private ref: ChangeDetectorRef ) { // listen for the real time streaming changes this.updateFeatures = this.featureflowService.featureChanged$.subscribe(features => { this.features = featureflowService.getFeatures(); // update features after feature change this.ref.detectChanges(); // change detection in features is manually run }); } ngOnDestroy() { // unsubscribe to ensure no memory leaks this.updateFeatures.unsubscribe(); } }
There is a simple running example based on the angular starter on stackblitz: https://stackblitz.com/edit/simple-featureflow-angular-example
Replace the key in app.component.ts with your own Environment SDK Key.
Update the SDK key in featureflow-angular-examaple/src/app/app.component.ts to match your JS Client Environment SDK Key
featureflowService.init('js-env-YOUR-KEY-HERE', {id: 'uniqueId1'}, null);
Start the example project
cd projects/featureflow-angular-example
ng serve
Try toggling features in the featureflow dashboard for your project and environment.
This project consists of 2 modules:
- /projects/featureflow-angular - the angular service library
- /projects/featureflow-angular-example - the example implementation
to build the library, from the root directory run
ng build featureflow-angular
then run the example
cd projects/featureflow-angular-example
ng serve
After building your library with ng build featureflow-angular
, go to the dist folder cd dist/featureflow-angular
and run npm publish
.
Run ng test featureflow-angular
to execute the unit tests via Karma.