Angular 9 Examples: Conditional Rendering With *ngIf & Else
In this example, we'll see how to conditionally render a component or HTML element in Angular 9 using the *ngIf
directive.
What's conditional rendering?
Conditional rendering means elements are inserted into the DOM only when a condition is meet.
Angular provides the *ngIf
directive which allows you to render elements conditionally in your Angular templates.
Let's see this with a simple example.
Open the src/app/app.component.ts
file in your project define a new class variable called displayElement
and gives it an initial value of false:
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
displayElement = false;
}
Next, open the src/app/app.component.html
file and update it as follows:
<div>
<p *ngIf="displayElement">Magic element!</p>
</div>
In this case, the <p>
element and its contents will not be rendered in the DOM because we applied the *ngIf
directive with a false value
If you go back to your component's class and assign a true value to the displayElement
variable the element will be rendered.
The Else block
Just like typical programming languages the *ngIf
directive can have an else
block which is shown if the statement defined in the main block is false.
Go back to the src/app/app.component.html
file and update it as follows:
<div>
<!-- notActive is a reference to else -->
<p *ngIf="displayElement; else showThis">Magic element!</p>
<ng-template #showThis>
Another magic element!
</ng-template>
</div>
Here, we used the else showThis
with the *ngIf
directive to provide a partial template that will be rendered instead if the <p>
element.
The else block has to be an ng-template
.
The Angular template is referenced using a template reference that we've called showThis
.
Another example
Open the src/app/app.component.html
file and replace the contents with the following code:
<input [(ngModel)]="showContent" type="checkbox"/> Show My Secret Message
<hr />
<div *ngIf="showContent; else message">
Hello Angular 9!
</div>
<ng-template #message>
Click the checkbox above to read the secret message!
</ng-template>
This will render a checkbox and a Click the checkbox above to read the secret message! text. When you click the checkbox, Hello Angular 9! will be rendered instead!
This is the example in Stackblitz
Join the 10xdev Community
Subscribe and get 8+ free PDFs that contain detailed roadmaps with recommended learning periods for each programming language or field, along with links to free resources such as books, YouTube tutorials, and courses with certificates.