Angular 2 Interview Questions

Angular 2 Interview Questions

Angular 2 is the upgraded and evolved version of AngularJS, a JavaScript framework that was developed by Google. Our recently updated Angular 2 Interview Questions can help you crack your next interview. Angular 2 is used for building single-page web or mobile applications. Written in TypeScript, Angular implements core functionalities as TypeScript libraries that get imported into apps. AngularJS is known for intuitive HTML and amazing new features where developers are free to use ngIf and ngRepeat, modular design and various other built-in functionalities.

A Quick Overview of Angular 2

Angular 2
What is Angular 2? Angular 2 is the upgraded and evolved version of AngularJS, a JavaScript framework that was developed by Google.
Latest Version Angular 8.0. released on May 28, 2019
Created By Google
Written in TypeScript
Official Website https://angular.io/

One of the unique features of the Angular 2 framework is that it is designed in such a way that each component is independently testable, using different methods. Angular 2 is mostly a rewrite of the first version to avoid its faults. We have an impressive collection of Angular 2 Interview Questions and Answers that is a must-read for all developers and designers!. One of the most significant advantages of Angular 2 is that it offers more language choices such as TypeScript, ES6, Dart and ES5 for writing codes. If you are scrolling on the web for angular 2 interview questions and answers for experienced pdf, then this guide will gonna help you.

Development History

Google originally developed AngularJS in 2009, and its first version was released in 2012. Since then AngularJS has been the leading open-source JavaScript framework until later versions were launched.


Angular 2 has the following advantages that are given below:

  • Code is simpler
  • Faster rendering
  • Built with mobile devices in mind
  • Better performance
  • Easier to read and learn
  • Simplified architecture because it is component-based
Related Interview Questions and Answers
Last update: 14 Oct 2019, 82 Questions and Answers

Most Frequently Asked Angular 2 Interview Questions And Answers With Examples:

Angular 2 is the upgraded and evolved version of AngularJS, a JavaScript framework that was developed by Google. Angular 2 is used for building a single-page web or mobile applications.

Components are essential elements of Angular 2 apps, and an application can have a number of components. In Angular 2, components perform all the tasks that were done by scopes, controllers and directives, such as creating or adding Data, logic and custom elements.

In Angular 2 an component consists of the following:
  • Template
  • Class
  • Metadata
38 3

Directives are the extended HTML attributes and they are also the most important features of Angular applications. They introduce syntax or markup.

There are 3 kinds of directives-
  • Components
  • Structural
  • Attribute
15 3

It allows us to specify the root level files. The compiler options required to compile a TypeScript project. It determines that the said directory is the TypeScript project root. Here is a JSON file describing to define a tsconfig.json file containing different parameters of the compilerOptions property:


    "compilerOptions": {
    "noImplicitAny": true,
    "module": "system",
    "removeComments": true,
    "strictNullChecks": true,
    "sourceMap": true,
    "allowUnreachableCode": false,
    "outFile": "../JS/TypeScript/BestInterviewQuestion.js"

Here is an example of these options.
  • target: It is used for the compiled output.
  • module: It is used in the compiled output. the system is for SystemJS, common for CommonJS.
  • moduleResolution: It is used to resolve module declaration files (.d.ts files). With the node approach, they are loaded from the node_modules.
  • sourceMap: generate or not source map files to debug your application.
  • emitDecoratorMetadata: emitDecoratorMetadata emit or not design-type metadata for decorated declarations in the source.
  • experimentalDecorators: It enables or not experimental support for ES7 decorators,
  • removeComments: remove comments or not
  • noImplicitAny: It is used to allow or not the use of variables.
3 4

The Router enables viewers to navigate from one view or page to the next as they perform application tasks. Routing assists users based on the option they select on the main web page. Based on user options, the Angular Component renders to the user.

7 3
  • Avoid injecting dynamic Html content
  • Sanitize external HTML
  • Do not put external URLs in the application
  • Use AOT compilation
  • Prevent XSRF attack by restricting api
3 0


Lazy loading Eager loadingIt
It needs to load using LoadChildren property in path or route configuration. This leading is useful for the growth of small size applications In order to load the eager loading module feature, it is important to import eager loading module into the application using imports metadata of decorator @NgModule

This is another asked about the Angular 2 interview question to know the in-depth knowledge of the interviewee.

4 2

Using angular routing you can navigate from one view or page to another while performing your tasks. You can configure a URL to redirect to the next URL. This feature can be handled to address the "404 Not Found" problem. Using location services in Angular routing you can go back and forward through the history of pages.

Syntax : We can use {path: '/OUR_PATH', redirectTo: ['redirectPathName']}



{path: '/404', name: 'PageNotFound', component: NotFoundComponent}

2 0

Traceur compiler takes classes, generators, and other features from ECMAScript edition 6 (ES6) and compiles it into JavaScript ES5 that runs on the browser. This means developers can use the code from a future version that has more features and encourages design patterns.

4 0

Angular has a robust DI framework that gives declared dependencies to a class upon instantiation. To inject a service, you must first create and register the injectable service.



import { Injectable } from '@angular/core';
@Injectable({ providedIn: 'root', })
export class SampleService { constructor() { } }

1 0

With lazy loading, JS components can be loaded asynchronously on activation on a specific route.

  • Download and install ocLazyLoad.js
  • Add the module in the application
  • Load the file in the required controller
  • Add to the router’s code as



resolve: {
     loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) {return $ocLazyLoad.load('routerState');

1 1

In all Angular version from 2 onwards, there is a common feature called Pipes. This feature helps developers create custom pipes.

Pipes are used to write display-value transformations that developers can declare in their HTML. A pipe inputs data and transforms it into the required output.

Pipes in Angular2

There are some pipe provided by angularjs are given below-

  • Uppercase/Lowercase Pipe
  • Date Pipe
  • Currency Pipe
  • JSON Pipe
  • Async Pipe
2 0

Lazy loading allows developers to load different code pieces on demand. For instance, if you have a retail application that has different departments like garments, groceries, electronics, etc. If you load all the sections, in the beginning, your application will be slow. This is when you need lazy loading. It helps the application load faster because it loads only parts that the user wants to see.

This interview questions on angular 2 are always a level up and thus a little tough to crack.

1 0

Unit testing helps to understand the fundamental concept which is related to test cases in Angular 2. While upgrading that to Angular projects, the test can be run in order to know which one has failed.

  • It reveals the errors in designing
  • It also analyses the behavior of the code
  • It acts as a guard against breaking changes
  • It also allows the refactoring
  • This test helps the developers in their work
2 2
Here is the steps to create a singleton service-
  • Import the injectable member using import {Injectable} from '@angular/core';
  • Import the HttpModule, Http and Response members’ as import { HttpModule, Http, Response } from '@angular/http';
  • Add the decorator @Injectable()
  • Export –
    export class UserService {
       constructor(private _http: Http) { }
4 0
  • Import the top-level component using import { Component } from '@angular/core';
  • Describe the component using the @ symbol. Create instances of @Directive, @Injectable, @RouterConfig etc.
  • Add meta-data like selector, providers, styles, template.
  • Export the component
  • Bootstrap the component



import { Component } from '@angular/core';
import { bootstrap } from '@angular/platform-browser-dynamic';

selector: 'my-test',
styles: [`
h1 {
template: `
<h1>Hi There! This is {{componentName}}.</h1>
export class TestComponent {
componentName: 'TestComponent'

2 0

Any change that occurs in the component gets propagated from the existing component to its children. If this change needs to be reflected its parent component, you can use using Event Emitter api to emit the event.

EventEmitter is class in @angular/core module that is used by directives and components to emit events.

@output() somethingChanged = new EventEmitter();

You can use somethingChanged.emit(value) to emit any event. You can do this in setter when the value is changed in the class.

3 0
  Components Directive
1. To register, use @Component meta-data annotation To register, use @Directive meta-data annotation
2. Used to create UI widgets and break up app into smaller components Use to design re-usable components and add behavior to existing DOM element.
3. Only one component allowed per DOM element Many directives allowed per DOM element.
4. @View decorator is mandatory Does not use View.
3 0

In order to manage the typescript definitions, typing is the way. A type definition manager manages the typing. It allows the typescript compiler to easily use the existing class and properties. Using the typing commands, a user can easily install typing from repositories.

0 2

The simplest way is to put the variables in a file and export them. In order to use global variables, you can use an import statement.


   // ===== This File is as globalfile.ts

// 'use strict';

export const name='bestinterviewquestion.com';


After that we can export this file where we want to use these global variables value.
import * as myGlobalsFile from './globalfile';

2 1
Advantages of Angular 2 over Angular 1 are given below-
  • Simpler to Learn
  • Simpler Dependency Injection
  • It’s is a platform not only a language:
  • Improved Speed and Performance: No $Scope in Angular 2, AOT
  • Modular, cross-platform
  • Flexible Routing with Lazy Loading Features
  • Benefits of ES6 and Typescript.
1 0

You can do this through property binding feature in Angular2. In order to bind data to components, you need to create a custom property bind. This can create it via “input” binding for passing data from one component to another. You can create the custom input binding via the @Input() decorator!

0 2
  Observable Promise
1. Used from the library RxJS.
import { Observable } from 'rxjs';
Built-in API.
2. Can show multiple values using setInterval() method Can resolve only one async task and cannot be used again
3. Can unsubscribe from the observables no longer needed. A promise cannot be canceled.
4. Lazy. Observable is called only when we subscribe. Not lazy.
5. Rich set of operators in the library like map, filter, pipe, retry, etc. No such additional features available
0 1

In Angular apps, hooks are functions that are called on particular stages of a component’s life. Hooks are essential if your app is based on the component architecture. Example for hooks is $onInit, $onChanges, etc. which are properties pre-defined by Angular and can be exposed on component controllers.

0 0

Here are the steps:

  • Import injectable member
  • Add @Injectable Decorator
  • Export Service class


Here is the syntax:

import { Injectable } from '@angular/core';
   export class MyCustomService {

1 0

In Angular 2, you can create custom pipes. The simplest way is as follows.

import { Pipe, PipeTransform } from '@angular/core';
    @Pipe({name: 'Pipename'})
    export class Pipeclass implements PipeTransform {
    transform(parameters): returntype { }

In the above code,

//   Pipename' is pipe's name.
//   Pipeclass is class that is assigned to custom pipe.
//   Transform is the function that works with custom pipe.
//   Parameters are the parameters that get passed to the pipe.
//   Returntype is the return type of the custom pipe.

1 0

This information is trending in angularjs 2 interview questions for experienced professionals.

In Angular 2, styles or styleUrls affect the style of template elements. The built-in properties in the component Decorator allow developers to encapsulate styles directly as part of their components.


Both style and styleUrls are arrays, which means that for styles, you can apply many definitions for each position. For styleUrls, you can split up different style rules into different style sheets.

0 1

It is a command-line interface which is used to build angular apps. We can construct & start a project very quickly with the help of CLI.

You can download CLI from its official website https://cli.angular.io

The command for install Angular CLI

npm install –g angular-cli

0 0
  @Injectable @Inject
1. Aims to set metadata of dependencies to be injected into constructor Tells Angular what parameter must be injected
2. Without it, no dependency can be injected Only needed to inject primitives
1 0

The Angular Ahead-of-Time (AOT) compiler converts Angular HTML and TypeScript codes into JavaScript code during the build phase before the browser can download and run the code.

Here are benefits of compiling with AOT:

  • Fast rendering
  • Lesser asynchronous requests
  • Smaller download size of Angular framework
  • Detects errors easily
  • Improved security
1 0
  • Fast download
  • Quicker rendering
  • Reduces Http Requests
  • Catches errors during the build phase
  • Only works with HTML and CSS; Not other file types.
  • Must maintain bootstrap file AOT version
  • Must clean-up before compiling.
0 0

The requestAnimationFrame is not defined” is an Angular universal server running issue. The best solution for this issue is to search for requestAnimationFrame and ensure it's only called when the user is in a browser, not in the server. We can do this by reviewing if there is a nativeElement present on a component ElementRef.



class blahComponent implements OnInit {
    constructor(private elRef:ElementRef) { }

    ngOnInit() {
        if (this.elRef.nativeElement) {
           /** here goes your code */

0 1
  • Using the flags enables "logging" from the command line.

It will make sure that information is locked internally along with console.log (). This lock file is known as chrome_debug.log, and it can be located in the directory.

  • Now you have to filter the log file
0 1
To check this, you need to make sure that node is installed and then check if angular CLI is installed.
  • Open a command prompt using cmd.
  • Type node -v and npm -v to ensure node is installed.
  • Type ng -v
0 0
Constructor ngOnInit
This one is a default class method which gets called when we create new objects. It's an Angular managed life cycle hook to indicate the completion of the component.
A constructor is mostly used to inject dependencies. We use this to perform initialization logic even if the logic doesn't depend on DOM, DI and input bindings.
0 0

In Angular 2, hidden property or [hidden] is a special case binding used to hide property. It can be compared close to ng-show and ng-hide, but more powerful to bind any property types of elements.


<div [hidden]="!active">
Hello, this is an active area!
0 0

Both @input and @output are decorators. The decorator @Input is used to bind a property within one child component to receive value from the parent component, whereas we use the @output decorator to bind the property of a component to send data from child component to parent component or calling component.

1 0

To display error message in Angular 2 from backend, we have to set the error message equal to an angular variable, and then check whether that variable exists to conform whether to display it or not.

<div *ngIf="errors" class="alert alert-danger">
    {{ errors }}


1 0

PrimeNG is a rich UI component collection dedicated to Angular. Widgets present here are completely open-source and free to use. It’s simple, lightweight yet powerful and optimized for responsive cross-browser touch.

0 0

To optimize an application for optimal performance in Angular 2, we have to follow the below-mentioned steps.

  • Use of AOT compilation.
  • With a large-size app, use lazy loading instead of the fully bundled app.
  • Avoid un-necessary import statements in the application.
  • Remove unused and unnecessary 3rd party libraries from the application.
  • If not required, consider removing application dependencies.
0 0

Yes, Angular 2 is a true object-oriented development framework.

1 1

The Tree Shaking is a concept of dead code elimination from projects. The code present in your project but neither referenced nor used will be dropped here. It will eliminate the unused modules during the build process, making user application lightweight.

0 0

The filter is used to converting the input to all lowercase and uppercase in Angularjs.



Best Interview {{Question}}

Best Interview {{appList[0] | lowercase}}

Best Interview {{appList[1] | uppercase}}


0 1

To avoid editor warning while defining custom typings, we have to extend the type definition for an external library as a good practice. Without changing any node_modules or existing typings folder, we have to create a new folder named “custom_typings" and put all our customized type definition there.

0 0

It is a very important application in the designing pattern, and Angular 2 has its own framework. Injectable is an essential ingredient that provides modularity to Angular 2. Injectables are provided by associating them with injector type.

0 2

Shadow DOM is an integral part of Web Components standard while enables users for style encapsulation and DOM tree. It helps users to hide DOM logic behind other elements. With the addition to it, we can also apply scoped styles to elements without showcasing them to the outer world.

0 0

All these symbols such as {}, [], [] and [()] are used to express data, event binding, templating concerns and property binding. {} is used for interpolation
[] is used of property binding
[()] is used for event binding

Use of {} symbol

import {Component} from 'Angular2/core';
selector: 'cars-app',
template: `
<h2>Total {{ totalCars }}</h2>
` }) export class CarsApp {
totalCars: number = 985;

use of [] symbol

Through special attributes on HTML elements, Every DOM property can be written.

Use of [()] symbol

The common syntax of event binding attribute is— ([Name of DOM event]) =”[Template expression]”

0 0

To allow a load of external CSS styles in AMngular 2 to affect component contents, we have to change view encapsulation which presents styles to components referring “bleed into”.

   selector: 'some-component',
   template: '<div></div>',
   styleUrls: [
   encapsulation: ViewEncapsulation.None,
export class SomeComponent {}


0 0

Inline templates are specified in the component directly using the template and External templates define the HTML in a separate file called templateUrl.


For more detail, you can visit https://www.code-sample.com/2017/06/angular2-template-vs-templateurl.html

0 0

Both ViewChild and ContentChild are used to perform component communication in AngularJS. The parent components use ViewChild or ContentChild to access child components. Template’s part of directive, element or component is referred to ViewChild, whereas element or component projected in the template us referred as ContentChild.

0 1
Annotation Decorator
Used by Traceur compiler Used by Typescript compiler
Annotation creates the attribute ‘annotations’ that stores arrays and pass metadata to the constructor of the annotated class. It is a function that gets the object that needs to be decorated (or constructed). They can change the attributes of the object as necessary.
Annotations are hard-coded Not hard-coded
Example – import {Component} from 'angular2/angular2'; Example - import {ComponentAnnotation as Component} from 'angular2/angular2';
0 0

In Angular 2, the polyfills.ts file is used to make user application compatible for various browsers. The code we write in Angular 2 is mostly in ES6, which is not compatible with Firefox or IE, and requires few environmental setups before they wither get viewed or used in browsers.

Angular offers Polyfills.ts file to help users with the required setup.

1 1

In Angular, lifecycle hooks are functions which will be called at specific points of a component lifecycle in Angular applications.

They are highly crucial for a component architecture based application.

1 0

When a page containing Angular based application loads, these below-mentioned scenarios will be completed.

  • The browser will load the HTML document and evaluate it.
  • The file for AngularJS JavaScript will be loaded and the Angular global object will be created.
  • Finally, the JavaScript that registers controller function will be executed.
0 0

These features stand out:

  • Use of TypeScript
  • Built-in support for mobile app development
  • Improved performance
  • Support for 3 directives types - component, decorator, and template.
  • Enhanced Dependency Injection
  • Increased data binding
  • Supports component-based architecture
  • Cross-platform and cross-browser support

Note: This is a very important angular 2 interview question and generally it is asked in every angular interview.

0 0

In Angular 2, deep linking is a process of the URL that will take to users to a specific page or content directly without crossing the application from the homepage. The deep linking process helps with website or application indexing so that search engines can easily crawl these links.

0 0

As services are reusable singleton objects in AngularJS which is used to organize and share codes across the application, they can be injected into filters, controllers, and directives. Angular 2 offers three ways to create a service; factory, service, and provider.

The factory function allows developers to include some logic before creating the object and returns the created object. The syntax for factory function is as follows.

app.factory('serviceName',function(){ return serviceObj;})

0 0

It is an open source tool for running and checking if the pre-defined coding guidelines were followed or not. It does static code analysis for typescript and angular projects.

It runs on top of tslint and coding conventions are defined in tslint.json file. Editors such as Visual Studio Code support codelyzer by doing basic settings.

0 0

The biggest benefit of TypeScript is tools like advanced autocompletion, refactoring and navigation. Because TypeScript developers do not need to rewrite to migrate to JavaScript. They can do it one module at a time. In addition, because of TypeScript, the code is easier to understand.

0 0
Factory Service
The factory function allows developers to add certain logic before the creation of an object. This one is a constructor function which helps creating the object with a new keyword. Developers can add functions and properties to a service object by using the keyword.
It will return the created object. It returns nothing.
app.factory('serviceName',function(){ return serviceObj;}
0 0
  AngularJS Angular 2
1. No mobile support Mobile-oriented
2. Only supports Dart, ES6 and ES5 Offer more language choices
3. Easy to set up Dependent on libraries. Requires efforts to set up.
4. Based on controllers and scope Component-based.
0 0

Promises in Angular 2 execute asynchronous functions in serial order by registering promise object. Additionally, promises are provided by build-in $q service. Promises have generated a new way into native JavaScript as a part of the ES6 specification

0 0

In Angular 2, a module groups the various components, pipes, directives, and services in a way that assists them in combining with other modules for creating an application.

A module can be used to hide or export pipes, directives, components and services.

0 0
Available with all Angular applications, rootScope is the scope HTML element created scope which contains ng-app directive. It is available in the entire application.
0 0

It's an AngularJS service that implements the underlying event and state management mechanism for AngularJS attributes, directives, views and controllers.


Whereas, it's a conventional parameter name given to a directive's link function's first argument.

0 0

An observable is an array where data arrives asynchronously.

Observables can help developers manage asynchronous data and are used within Angular, including event system and HTTP client service. Angular uses Reactive Extensions (RxJS), a third-party library, to use Observables.

0 0

In general, two-way data binding in Angular 2 is the automatic synchronization of data between the view components and model. Two-way data binding allows the users to treat the model as a single source of truth in your application.

1 0
This below mentioned will be the lifecycle hooks order in AngularJS.
  • ngOnChanges()
  • ngOnInit()
  • ngDoCheck()
  • ngAfterContentInit()
  • ngAfterContentChecked()
  • ngAfterViewInit()
  • ngAfterViewChecked()
  • ngOnDestroy()
0 0
Ng model Ng bind
This works as a two-way data binding where the user has to bind a variable to the field and output the same variable wherever the user desire to display that updated value anywhere in the application.
The syntax used for ng-model is –
<textarea ng-model="propertyName"></textarea>
It's a one-way data-binding used by developers for displaying the value inside HTML component as inner HTML.
The syntax used for ng-bind is –
<div ng-bind="propertyName"></div>
0 0

Decorators allow developers to configure classes as elements by putting metadata on them.

The most common decorators are @Component one for components and @Injectable one for classes.

Decorators are new in TypeScript, and were not available in AngularJS. Angular2 onwards offers four types of decorators and each plays a unique role - Class, Property, Method, and Parameter.

1 0

It's an object declared to Angular so that it can be injected within the constructor of user directives, components and other classes which are Angular instantiated.

0 0

Services allow greater separation of concerns in Angular applications. They also provide modularity by allowing developers to extract common functionalities out of components. Adding Services to Angular applications makes components free from data access code.


Service has the following features:

  • Singleton, i.e. only one instance of service will exist throughout the application.
  • Capable of returning data in the form of Observables and promises.
  • Decorated with @Injectable() decorator
0 0

It's an API or set of programs used by Angular 2 developers to update application view when any changes occurred. It's an execution context that situates across the asynchronous task.

0 0

It configures the injector and compiler, and assists in organizing things together. This class is marked by the @NgModule decorator. It can identify module's directives, components, and pipes, making them public as required through the exports properties so that they can be used by the external components.

0 1

Angular 2 applications require to redirect route and pathMatch is a property which informs a router how to match and map a URL to the path of an actual route. In the application, the router automatically select the route using component HeroListComponent only when the entire URL of matches for example-

const appRoutes: Routes = [
   { path: 'crisis-center', component: CrisisListComponent },
   { path: 'heroes', component: HeroListComponent },
   { path: '', redirectTo: '/heroes', pathMatch: 'full' },
   { path: '**', component: PageNotFoundComponent }

0 0

In actual, resolver (class) is a powerful technique which is used to achieve the best user experience when browsing between pages in the application. For the implementation of the resolver class, it is important to create a new folder called resolves. Thereafter put resolvers with same template resolveName.resolver.ts

0 0

Activatedroutesnapshot in Angular 2 is basically an immutable object which is used to represent a particular version of ActiveRoute.

For the implementation of Activatedroutesnapshot object following syntax can be used.

export class ActivatedRoute {
   /** The current snapshot of this route **/
   snapshot: ActivatedRouteSnapshot;

0 0

Router state represents all the state of the router as a tree of activated routes.

interface RouterState extends Tree {
   snapshot: RouterStateSnapshot
   toString(): string

2 0

Modal footer is basically used when the template is fully loaded. User needs to write the code inside the ngAfterViewInit then users will not get the footer element. Thus, footer modal is life cycle event which is used to check whether the Dom is fully loaded or not.

4 1


2 weeks ago

Great, This is helpful

Add Review

Ask Question