Site icon Tutorial

Component

Go back to Tutorial

Components are the most basic UI building block of an Angular app. An Angular app contains a tree of Angular components. Angular components are a subset of directives, always associated with a template. Unlike other directives, only one component can be instantiated per an element in a template. A component must belong to an NgModule in order for it to be available to another component or application. To make it a member of an NgModule, list it in the declarations field of the @NgModule metadata.

A component is basically a class that is defined to visualize any element on the screen. The components have some properties and by using them, we can manipulate how the element should look and behave on the screen. We can create, deploy, and update our own component as per our requirement. But when writing code using TypeScript, a component is basically a TypeScript class decorated with @Component() decorator.

import {Component} from “@angular/core”;

@Component({ 0020

selector: ‘first-prog’,

template: ‘Welcome to Angular’

})

export class FirstProgComponent{

}

Decorators are the JavaScript functions which amend the decorated class in some way. Basically, in these functions, an additional meaning to a plain JavaScript class based on the decorator is used. From the developers’ point of view, we just declaratively decorate a class by passing a mandatory configuration object as a parameter to the decorator function.

Components are a really neat idea. Each component class being an independent unit is highly reusable and can be maintained without messing up with other components. Scaling is as easy as adding more components to your existing application.

Component Configuration

@Component decorator basically decorates a TypeScript class as a component object. Basically, it is a function which takes different types of parameters. In the @component decorator, we can set the values of different properties to finalize the behavior of the components. The most used properties are as below.

Component Lifecycle

The lifecycle of the component is maintained by the Angular 7 itself. Below is the list of lifecycle methods of Angular components.

constructor – method is executed before the execution of any lifecycle method. It is basically used for injecting dependency.

Angular Component Architecture Layout

If we remember the Angular architecture, every UI in angular framework must be composed as a tree of Angular Component – one component will be placed beside another component, both of which may be wrapped up by one outer component and so on. This hierarchy starts with one Root Component which is normally called as Bootstrapped Component. Here are the steps of the Create Root Component,

Create Angular Module

As we already discussed earlier that everything in Angular 7 belongs to an Angular Module, for developing the root component, we first need to declare our first Angular module. An Angular module can be defined by creating a TypeScript class decorated with the “NgModule” decorator. Actually, NgModule is a decorator defined within the “@angular/core” library. @NgModule takes a metadata object that tells Angular how to compile and run module code. It identifies the module’s own components, directives, and pipes, making some of them public so external components can use them. In order to use it, we first need to import it as follows,

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

@NgModule()

export class SampleModule { }

Create Angular Component

Finally, we reach a position where we need to create our first component using Angular 7. It can be done by creating a class decorated with @Component decorator which defined within the “@angular/core” library. Below the sample code for the angular component,

import { Component } from “@angular/core”;

 

@Component({

selector: “home”,

template: “<strong>Welcome To Angular 7</strong> “

})

export class HomeComponent {

constructor() {

}

}

In the above code, we pass two parameters to the component decorator,

Add Component to Module

Now, the next step is to add the component within the angular module. It can be done using “declarations” option within “NgModule” decorator. For adding the component, we need to import the component within the module by using import keyword.

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

import { HomeComponent } from ‘./SampleCode/app.component.home’;

@NgModule({

declarations: [HomeComponent]

})

export class SampleModule { }

Bootstrap the Module

As we already discussed, a single angular application can contain more than one Angular modules. But out of the all modules, only one module can be bootstrapped at the beginning. In Angular 7, this bootstrapping process needs to be done manually with the help of “platformBrowserDynamic” function which is defined within the “@angular/platform-browser-dynamic” library. Before bootstrapping Angular module, it is important to define the export keyword in the module class definition statement so that we can import that class into another file. Normally, as per standard guidelines of Angular, we define this bootstrap process within the main.ts file.

import { platformBrowserDynamic } from ‘@angular/platform-browser-dynamic’;

import { SampleModule } from ‘./app.article.module’;

platformBrowserDynamic().bootstrapModule(SampleModule);

Bootstrap the Component

In the previous section, we discussed if there are many modules that we need to bootstrap, one module as a starting module needs to be defined within the main.ts file. But at the same time, one module always contains multiple components. Then, what happens in this scenario – which component will be starting component or how Angular will identify its root component? For this reason, we also need to bootstrap the root component so that Angular can identify it. It can be done by using the bootstrap option in “NgModule” decorator.

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

import { HomeComponent } from ‘./SampleCode/app.component.home’;

@NgModule({

declarations: [HomeComponent],

bootstrap: [HomeComponent],

})

export class SampleModule { }

Now, we will create a basic component which will display some data into the web pages. For that, we first create a typescript file named app.component.helloworld.ts and add the below code,

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

@Component({

selector: ‘Hello-world’,

template: ‘<strong><b>Angular !</b>Hello World</strong>’

})

 

export class HelloWorldComponent {

constructor() {

}

 

ngOnInit() {

alert(“Page Init Method Fired!!”)

}

}

Now, add another TypeScript file named app.component.home.ts and the below code (basically this is the root component for us. We actually bootstrapped this component from the app.module.ts file

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

 

@Component({

moduleId: module.id,

selector: ‘home-page’,

templateUrl: ‘app.component.home.html’

})

export class HomeComponent {

constructor() {

}

}

 

As per the above code, we use templateUrl properties of the component decorator for the root component. For this, we need to add an HTML file called app.component.home.html (We placed TypeScript and HTML file in the same folder location. But we can also place these two types of files in different locations. In that scenerio, we need to providethe HTML file name with related file path and the below code.

<strong>Angular Code Samples</strong>

<br />

<Hello-world></Hello-world>

<br />

Now, add another TypeScript file for Angular module and write down the code given below.

import { NgModule, NO_ERRORS_SCHEMA } from ‘@angular/core’;

import { APP_BASE_HREF } from ‘@angular/common’;

import { BrowserModule } from ‘@angular/platform-browser’;

import { FormsModule } from “@angular/forms”;

import { HttpModule } from ‘@angular/http’;

import { RouterModule } from ‘@angular/router’;

import { HomeComponent } from ‘./SampleCode/app.component.home’;

import { HelloWorldComponent } from ‘./SampleCode/app.component.helloworld’;

@NgModule({

imports: [BrowserModule, FormsModule, HttpModule],

declarations: [HomeComponent, HelloWorldComponent],

bootstrap: [HomeComponent],

schemas: [NO_ERRORS_SCHEMA]

})

export class ArticleModule { }

Now, add another file called main.ts and add the below code.

 

import { platformBrowserDynamic } from ‘@angular/platform-browser-dynamic’;

import { ArticleModule } from ‘./app.article.module’;

 

platformBrowserDynamic().bootstrapModule(ArticleModule);

Now, add the below code in index.html file.

<!DOCTYPE html>

<html lang=”en”>

<head>

<!–<base href=”/”>–>

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>

<meta charset=”utf-8″>

<title>Angular – Console</title>

<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>

<meta name=”description” content=””>

<meta name=”keywords” content=””>

<meta name=”author” content=””>

 

<link href=”resource/css/bootstrap.min.css” rel=”stylesheet”>

<link rel=”stylesheet” href=”resource/css/font-awesome.min.css”>

<link rel=”stylesheet” href=”resource/css/jquery-ui.css”>

<link href=”resource/css/style.css” rel=”stylesheet”>

<link rel=”shortcut icon” href=”img/favicon/favicon.ico”>

</head>

<body>

<div class=”content”>

<home-page></home-page>

</div>

<footer>

<div class=”container”>

<div class=”row”>

<div class=”col-md-12″>

<p class=”copy”>Copyright © 2017-2018 | <a href=”http://www.c-sharpcorner.com/members/debasis-saha”>Debasis Saha</a> </p>

</div>

</div>

</div>

</footer>

<script src=”resource/js/jquery.js”></script>

<script src=”resource/js/bootstrap.min.js”></script>

<script src=”resource/js/jquery-ui.min.js”></script>

<script src=”resource/js/jquery.slimscroll.min.js”></script>

<script src=”resource/js/custom.js”></script>

 

<script src=”node_modules/core-js/client/shim.min.js”></script>

<script src=”node_modules/zone.js/dist/zone.js”></script>

<script src=”node_modules/systemjs/dist/system.src.js”></script>

<script src=”systemjs.config.js”></script>

<script>

System.import(‘main.js’).catch(function (err) { console.error(err); });

</script>

 

<!– Set the base href, demo only! In your app: <base href=”/”> –>

<script>document.write(‘<base href=”‘ + document.location + ‘” />’);</script>

</body>

</html>

Now, run the code.

 

Go back to Tutorial

Exit mobile version