Rupali

Front-end developer || Build reusable code for future use || Ensure the technical feasibility of UI/UX designs

Angular Cheat Sheet

Definition: Angular is a TypeScript based open-source web application framework used in building both web and mobile based applications.

Angular CLI

Angular gives us the ability to do a whole lot using their CLI. You can config the entire application by just using the CLI. Here are some of the commands:

  • npm install -g @angular/cli : This command will install the Angular CLI into our local machine using npm.
  • ng new <application name> : This will set up a new Angular application using the ng new command.
  • ng new <application name> –prefix best : This creates a new project and sets the projects prefix to new.
  • ng new –help: This returns all available Angular command list.
  • ng lint my-app: This command checks our entire application for any linting warnings.
  • ng lint my-app –fix: If there are any form of linting errors, this command will fix it.
  • ng lint my-app –format stylish : This formats our entire codebase.
  • ng lint my-app –help: This command returns all the available linting command list.
  • ng add <package name>: This command will use your package manager to download new dependencies and update the project with configuration changes.
  • ng generate component <name>: This will create a new component on our application. We can also use the ng g c <name> shorthand to do this.
  • ng g d <directive name>: This command angular directive.
  • ng g s <service name> : Creates a new Javascript class based service.
  • ng g p <pipe name>: Generates a new pipe
  • ng g cl <destination> : This will create a new class in the specified directory.
  • ng build: Builds the application for production and stores it in the dist directory.
  • ng serve -o: Serves the application by opening up the application in a browser using any port 4200 or any available port.
  • ng serve -ssl: serves the application using ssl

Angular Lifecycle Hooks

A component in Angular has a life-cycle, a number of different phases it goes through from birth to death.We can hook into those different phases to get some pretty fine grained control of our application. Let’s see some lifecycle hooks:

  • ngOnChanges:  This is called whenever one of the input properties change.
  • ngOnInit:  This is called immediately after ngOnChanges is completed and it is called once.
  • ngOnDestroy:  Called before angular destroys a directive or component
  • ngDoCheck:  Whenever a change detection is run, this is called.
  • ngAfterContentInit: Invoked after Angular performs any content projection into the component’s view.
  • ngAfterContentChecked:  This is called each time the content of the given component has been checked by the change detection mechanism of Angular.
  • ngAfterViewInit:  This is called when the component’s view has been fully initialized.
  • ngAfterViewChecked: Invoked each time the view of the given component has been checked by the change detection mechanism of Angular.

How Angular Hooks are used

Always remember that hooks working in a component or directory, so use them in our component, we can do this:

 class ComponentName {

   @Input(‘data’) data: Data;

   constructor() {

   console.log(`new – data is ${this.data}`);

   }

   ngOnChanges() {

       console.log(`ngOnChanges – data is ${this.data}`);

   }

   ngOnInit() {

       console.log(`ngOnInit  – data is ${this.data}`);

   }

   ngDoCheck() {

       console.log(“ngDoCheck”)

   }

   ngAfterContentInit() {

       console.log(“ngAfterContentInit”);

   }

   ngAfterContentChecked() {

       console.log(“ngAfterContentChecked”);

   }

   ngAfterViewInit() {

       console.log(“ngAfterViewInit”);

   }

   ngAfterViewChecked() {

       console.log(“ngAfterViewChecked”);

   }

   ngOnDestroy() {

       console.log(“ngOnDestroy”);

   }

}

Component DOM

Angular comes with its DOM features where you can do a whole lot from binding of data and defining dynamic styles. Let’s take a look at some features:

Before we dive into the features, a simple component.ts file is in this manner:

import { Component } from ‘@angular/core’;

@Component({

   // component attributes

   selector: ‘app-root’,

   templateUrl: ‘./app.component.html’,

   styleUrls: [‘./app.component.less’]

})

export class AppComponent {

   name: ‘Rupali’;

}

Let’s look at some template syntax:

  • Interpolation: using {{data to be displayed}} will display dynamic content from the ts file.
  • <button (click)=”callMethod()” … /> : Adding Click events to buttons to call a method defined in the ts file
  • <button *ngIf=”loading” … />: Adding Conditionals to elements. Conditionals have to listen to truthy or falsy values.
  • *ngFor=”let item of items”: iterate through a defined list of items.Picture this as a for loop.
  • <div [ngClass]=”{green: isTrue(), bold: itTrue()}”/>: Adding dynamic classes based on conditionals.
  • <div [ngStyle]=”{‘color’: isTrue() ? ‘#bbb’ : ‘#ccc’}”/>: Adding dynamic styles to template based on conditions

 Component Communication

Passing data from one component to another can be a little bit tricky in Angular. We can pass data from child to parent, parent to parent and between two unrelated components:

  • input(): This method helps To pass value into the child component.

export class SampleComponent {

@Input() value: ‘Some Data should go in here’; }

Child components are registered in parents component like this:

<child-component [value]=”data”></child-component>

  • output(): This method Emits events to the parent component. Bunch of data can be passed into emitted event which makes it a medium of passing data from child to parent:

            To Emit the event from the child component:

 @Output() myEvent: EventEmitter < MyModel > = new EventEmitter();

calledEvt(item: MyModel) {

   this.myEvent.emit(item);

}

And then the parent component listens to that event:

<parent-component

(myEvent)=”callMethod()”></parent-component>

Angular Routing

Routing is another cool feature of Angular, with the Angular Routing system we can navigate through pages and even add route guards.

  • Component Routing: We can define routes in our application by defining the path and the component to be rendered:

const routes: Routes = [

 { path: ‘home’, component:HomeComponent },

 { path: ‘blog/:id’, component: BlogsPot Component },

 { path: ‘**’, component: PageNotFoundComponent }

];

For routing to work, add this the your app.module.ts file:

RouterModule.forRoot(routes)

There are situations where by you want to keep track of what is happening in your routes, you can add this to enable tracking in your angular project:

RouterModule.forRoot(routes,{enableTracing:true})

To navigate through pages in Angular, we can use the routerLink attribute which takes in the name of the component we are routing to:

<a routerLink=”/home” routerLinkActive=”active”> Crisis Center</a>

The routerLinkActive=”active” will add an active class to the link when active.

Writing Route Guards

We can define guards for route authentication. We can use the CanActivate class to do this:

class AlwaysAuthGuard implements CanActivate {       

       canActivate() {

               return true;

       }

}

To use this rote guard in our routes we can define it here:

const routes: Routes = [

 { path: ‘home’, component:HomeComponent },

 { path: ‘blog/:id’, component: BlogPostCompoent,canActivate: [AlwaysAuthGuard],  },

   { path: ‘**’, component: PageNotFoundComponent }

];

Share