Angular: What is it?
Google created and maintains the robust front-end web application framework known as Angular js. It enables programmers to create robustly architectured, dynamic single-page web applications (SPAs). Because of its modular design, two-way data coupling, and plenty of features that make development easier, Angular stands out.
The Operation of Angular
Because of Angular’s component-based architecture, a larger application is broken up into smaller, more manageable parts. These constituents constitute the fundamental elements of an Angular application. Angular uses TypeScript to improve tooling and type safety and uses a hierarchical dependency injection framework.
Key Concepts
- The fundamental components of an Angular application are called modules. The root module, which bootstraps the application, is the minimum module included in every Angular application. An application can be arranged into coherent functional units with the use of modules.
- The essential element of Angular apps is their components. Each component is made up of a CSS style, an HTML template, and a TypeScript class that specifies how it should behave. A view is a section of the screen that is controlled by components.
- Templates: A component’s view is defined by a template. They connect data and react to user events using Angular’s robust template syntax.
- Services: Angular services allow different components of an application to exchange functionality and data. Business logic, data retrieval, and other functions are usually handled by them.
- Dependency injection is a technique used by Angular to supply components with the services they require. This encourages testing simplicity and modularity.
- Routing: Views or components may be navigated between using the Angular Router. It makes it possible to create SPAs by mapping URL pathways to the appropriate components.
Configuring an Angular
You must install npm (Node Package Manager) and Node.js before you can begin using Angular. After that, install Angular CLI (Command Line Interface), which makes maintaining and building Angular projects easier.
npm install -g @angular/cli
Create a new Angular project using the CLI:
ng new my-angular-app
cd my-angular-app
ng serve
This command scaffolds a new Angular project and starts a development server. Open http://localhost:4200/
in your browser to see your new Angular application in action.
Angular Expressions
Code fragments known as “angular expressions” are typically used in bindings to evaluate variables or show data. They are evaluated inside the confines of the Angular framework, yet they resemble JavaScript expressions.
Numbers
You can use Angular expressions to perform arithmetic operations.
<p>{{ 5 + 5 }}</p> <!-- Outputs 10 -->
<p>{{ 10 * 2 }}</p> <!-- Outputs 20 -->
Strings
String concatenation and other string operations are also supported.
<p>{{ 'Hello ' + 'World' }}</p> <!-- Outputs Hello World -->
<p>{{ 'Angular'.toUpperCase() }}</p> <!-- Outputs ANGULAR -->
Objects
You can access object properties using Angular expressions.
<p>{{ person.name }}</p>
<p>{{ person.age }}</p>
Arrays
Similarly, array elements can be accessed and manipulated.
<p>{{ fruits[0] }}</p> <!-- Outputs the first fruit -->
<p>{{ fruits.length }}</p> <!-- Outputs the length of the array -->
Angular Example: Building a Simple Application
Let’s build a simple Angular application that demonstrates the basic concepts.
Step 1: Create a New Component
Generate a new component using Angular CLI:
ng generate component example
This command creates a new folder example
with four files: example.component.ts
, example.component.html
, example.component.css
, and example.component.spec.ts
.
Step 2: Define the Component Class
Open example.component.ts
and define the component class:
import { Component } from '@angular/core';
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css']
})
export class ExampleComponent {
title = 'Angular Example';
number = 42;
message = 'Hello Angular!';
person = { name: 'John Doe', age: 30 };
fruits = ['Apple', 'Banana', 'Cherry'];
getGreeting(): string {
return `Hello, ${this.person.name}!`;
}
}
Step 3: Create the Template
In example.component.html
, create the HTML template:
<h1>{{ title }}</h1>
<p>{{ message }}</p>
<p>{{ number }}</p>
<p>{{ person.name }} is {{ person.age }} years old.</p>
<p>Fruits:</p>
<ul>
<li *ngFor="let fruit of fruits">{{ fruit }}</li>
</ul>
<p>{{ getGreeting() }}</p>
Step 4: Style the Component
Add some basic styling in example.component.css
:
h1 {
color: #42A5F5;
}
p {
font-size: 16px;
}
Step 5: Add the Component to the Application
In app.module.ts
, add the ExampleComponent
to the declarations array:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { ExampleComponent } from './example/example.component';
@NgModule({
declarations: [
AppComponent,
ExampleComponent
],
imports: [
BrowserModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Step 6: Use the Component in the Application
Finally, include the ExampleComponent
in app.component.html
:
<app-example></app-example>
To view the output, launch the application using ng serve and go to http://localhost:4200/.
Angular Expressions: Detailed Examples
Utilizing Numerical Data
Because angular expressions can handle a wide range of mathematical operations, computations may be easily carried out inside of templates.
<p>{{ 10 + 20 }}</p> <!-- Outputs 30 -->
<p>{{ 50 - 15 }}</p> <!-- Outputs 35 -->
<p>{{ 7 * 6 }}</p> <!-- Outputs 42 -->
<p>{{ 100 / 4 }}</p> <!-- Outputs 25 -->
Manipulating Strings
Angular expressions support string concatenation, methods, and more.
<p>{{ 'Angular ' + 'Rocks!' }}</p> <!-- Outputs Angular Rocks! -->
<p>{{ 'Frontend'.toLowerCase() }}</p> <!-- Outputs frontend -->
<p>{{ 'DEVELOPMENT'.charAt(0) }}</p> <!-- Outputs D -->
Accessing Object Properties
When working with objects, Angular expressions allow easy access to properties.
person = { firstName: 'Jane', lastName: 'Doe', age: 28 };
<p>{{ person.firstName }}</p> <!-- Outputs Jane -->
<p>{{ person.lastName }}</p> <!-- Outputs Doe -->
<p>{{ person.age }}</p> <!-- Outputs 28 -->
Handling Arrays
Angular expressions can iterate over arrays, access elements, and determine length.
colors = ['Red', 'Green', 'Blue'];
<p>{{ colors[0] }}</p> <!-- Outputs Red -->
<p>{{ colors.length }}</p> <!-- Outputs 3 -->
<ul>
<li *ngFor="let color of colors">{{ color }}</li>
</ul>
Advanced Angular Concepts
Instructions
Directives are unique DOM markers that instruct Angular on how to handle a certain DOM element. They provide new capability and behavior to HTML, extending its capabilities.
Guidelines for Structure
Structural directives add and remove DOM components to alter the DOM layout. Among them are *ngIf and *ngFor.
<p *ngIf="showMessage">This message is conditionally shown.</p>
<ul>
<li *ngFor="let item of items">{{ item }}</li>
</ul>
Attribute Directives
An element, component, or another directive’s look or behavior can be altered via attribute directives. A typical illustration is ngClass.
<p [ngClass]="{ 'highlight': isHighlighted }">This paragraph may be highlighted.</p>
Services and Dependency Injection
Reusable business logic is encapsulated in services. The dependency injection mechanism included into Angular makes it possible for components to share these services effectively.
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class DataService {
getData() {
return ['Data1', 'Data2', 'Data3'];
}
}
import { Component, OnInit } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'app-data',
templateUrl: './data.component.html',
styleUrls: ['./data.component.css'],
})
export class DataComponent implements OnInit {
data: string[];
constructor(private dataService: DataService) {}
ngOnInit() {
this.data = this.dataService.getData();
}
}
Routing
The routing module of Angular facilitates the creation of SPAs by controlling URLs and navigation.
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { AboutComponent } from './about/about.component';
const routes: Routes = [
{ path: '', component: HomeComponent },
{ path: 'about', component: AboutComponent },
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
<nav>
<a routerLink="/">Home</a>
<a routerLink="/about">About</a>
</nav>
<router-outlet></router-outlet>
With its extensive feature set, Angular is a potent framework for creating dynamic web apps. Developers love it because of its component-based architecture, dependency injection, and extensive tools. With the help of this introduction, you should have a strong basis on which to construct and expand complicated applications while using Angular.