WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Angular · Advanced · question 41 of 100

What are the differences between the microsyntax *ngIf and [ngIf]? When should you use each?

📕 Buy this interview preparation book: 100 Angular questions & answers — PDF + EPUB for $5

The ‘*ngIf‘ and ‘[ngIf]‘ are both Angular directives, but there are differences in their syntax and usage within Angular applications. In this answer, I will discuss these differences, provide examples and scenarios for when you should use each one.

### *ngIf (Asterisk Syntax)

‘*ngIf‘ uses the asterisk (*) syntax, which is a shorthand form for structural directives. Structural directives in Angular are responsible for shape or reshaping the DOM’s structure by adding, removing, or manipulating elements. ‘*ngIf‘ is used when you want to conditionally add or remove an entire element from the DOM based on a given condition.

Usage of ‘*ngIf‘:

<p *ngIf="condition">This paragraph will be displayed if the 'condition' is true.</p>

In this example, the ‘<p>‘ element will only be displayed if the ‘condition‘ evaluates to true. If the ‘condition‘ is false, the entire ‘<p>‘ element will be removed from the DOM.

### [ngIf] (Property Binding Syntax)

‘[ngIf]‘ uses property binding syntax. Property binding is a one-way data binding mechanism that binds a property of a DOM element to a field, property, or expression in your component. When ‘[ngIf]‘ is used, it actually requires an additional element or directive, such as ‘<ng-container>‘ or ‘<ng-template>‘ along with the ‘ngIf‘ structural directive.

Usage of ‘[ngIf]‘:

<ng-container [ngIf]="condition">
  <p>This paragraph will be displayed if the 'condition' is true.</p>
</ng-container>

In this example, the ‘<ng-container>‘ element works as a container for the elements you want to add or remove from the DOM based on the ‘condition‘. The ‘<ng-container>‘ element itself does not get rendered in the DOM, and it acts as a placeholder for elements affected by the ‘ngIf‘ directive.

### Differences

The main differences between ‘*ngIf‘ and ‘[ngIf]‘ can be summarized as follows:

1. Syntax: ‘*ngIf‘ uses the asterisk (*) syntax, while ‘[ngIf]‘ uses property binding syntax.

2. Usage: ‘*ngIf‘ is used directly on the element you want to conditionally add or remove from the DOM, while ‘[ngIf]‘ requires an additional wrapper element or directive.

### When to use each

You should use ‘*ngIf‘ when you want to conditionally add or remove an entire element from the DOM based on a given condition. This is the most common use case in Angular applications:

<div *ngIf="isLoggedIn">Welcome, user!</div>

On the other hand, you should use ‘[ngIf]‘ in combination with a wrapper element, like ‘<ng-container>‘ or ‘<ng-template>‘, when you have multiple sibling elements that depend on the same condition, or when you don’t want to add additional DOM elements:

<ng-container [ngIf]="isLoggedIn">
  <div>Welcome, user!</div>
  <button (click)="logout()">Logout</button>
</ng-container>

In summary, ‘*ngIf‘ and ‘[ngIf]‘ are methods to work with Angular’s structural directives. The main differences between the two are their syntax and how they are used in the DOM structure. Both have their use cases, and you should choose the one that fits the requirement of your application better.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Angular interview — then scores it.
📞 Practice Angular — free 15 min
📕 Buy this interview preparation book: 100 Angular questions & answers — PDF + EPUB for $5

All 100 Angular questions · All topics