Use of *ngIf directive to change the output conditionally

Example:

component.ts file:

import { Component, OnInit } from '@angular/core';  

  

@Component({  

  selector: 'app-server2',  

  templateUrl: './server2.component.html',  

  styleUrls: ['./server2.component.css']  

})  

export class Server2Component implements OnInit {  

 allowNewServer = false;  

 serverCreationStatus = 'No server is created.';  

  serverName = 'TestServer';  

  serverCreated = false;  

  

  /*constructor() {  

    setTimeout(() =>{  

      this.allowNewServer = true;  

    }, 5000);  

  }*/  



  ngOnInit() {  

  }  

  onCreateServer() {  

    this.serverCreated = true;  

    this.serverCreationStatus = 'Server is created. Name of the server is' + this.serverName;  

  }  

  OnUpdateServerName(event: Event) {  

    this.serverName = (<HTMLInputElement>event.target).value;  

  }  

}

component.html file:

<p>  

  Server2 is also working fine.  

</p>  

  

<label>Server Name</label>  

<!--<input type="text"  

       class="form-control"  

       (input)="OnUpdateServerName($event)">-->  

<input type="text"  

       class="form-control"  

[(ngModel)]="serverName">  

<!--<p>{{serverName}}</p>-->  

<button  

  class="btn btn-primary"  

  [disabled]="allowNewServer"  

  (click)="onCreateServer()">Add Server</button>  

<p *ngIf="serverCreated"> Server is created. Server name is {{serverName}}</p>

Output:

The output will look like this.

Use of *ngIf directive to change the output conditionally

When we change the input value and click on “Add Server” button, you will see the following result:

Use of *ngIf directive to change the output conditionally

You can see in the above example that by using *ngIf directive, we can change the condition to display the output accordingly.

You can check the view source of your output before and after the adding the server. You will see the difference clearly.

Before adding server:

Use of *ngIf directive to change the output conditionally

After adding the server:

Use of *ngIf directive to change the output conditionally

So, you can see that how a structural directive can change the DOM.

*ngIf directive with an Else condition

You can also use an Else condition with *ngIf directive. It is used to display the output if *ngIf is not true. Let’s make some changes in component.html file.

component.html file:

<p *ngIf="serverCreated; else noServer"> Server is created. Server name is {{serverName}}</p>  

<ng-template #noServer>  

  <p>No Server is created.</p>  

</ng-template>

Output:

Use of *ngIf directive to change the output conditionally

After clicking on “Add Server” button:

Use of *ngIf directive to change the output conditionally

You can also check its reverse case by using the negation (!) sign.

<p *ngIf="!serverCreated; else noServer"> Server is created. Server name is {{serverName}}</p>  

<ng-template #noServer>  

  <p>No Server is created.</p>  

</ng-template>

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *