Using UnderscoreJs in Angular4 project

I recently introduced UnderscoreJs in a previous article : Introducing UnderscoreJs.

I’m a big fan of  Angular 4 as well, and in this article i will show you how to use UnderscoreJs in Angular 4 (that uses Typescript).

I will show you also how to abstract UnderscoreJs in you Angular 4 in order to decouple as much as possible your from UnderscoreJs.

 

Step 1 :

Create your app and add Underscore as NPM package:

npm install underscore

Step 2 :

We want to abstract Underscore, let’s create a service :

ng g service services/Helper

This command will create the service directory and a prefilled file named helper.service.ts wich look like this :

import { Injectable } from '@angular/core';
@Injectable()
export class HelperService {
constructor() { }
}

Step 3 :

Import Underscore in your service then encapsulate it in custom function (example with each function) :

import { Injectable } from '@angular/core';
import { _ } from 'underscore';

@Injectable()
export class HelperService {

  constructor() { }

  public each(array, delegate) {
    return _.each(array, delegate);
  }

}

Step 4 :

Inject your service into your components like this :

import { Component, OnInit } from '@angular/core';
import { HelperService } from './services/helper.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  constructor(private _helper: HelperService) { }
}

Step 5 :

To use each function define an array and call the service mwthod previously defined :

import { Component, OnInit } from '@angular/core';
import { HelperService } from './services/helper.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  private _fruits = ["Apple", "Banana", "Grapefruit"];

  constructor(private _helper: HelperService) { }

  public ngOnInit() {
    this._helper.each(this._fruits, console.log);
  }
}

Step 6 :

Run your app with

ng serve

and look in the Chrome console for example :

Now you can encapsulate Underscore and many other libraries in your apps 😉