Control Flow Statements - @if, @else, Toggle, Multiple Conditions
Control flow statements are also called:
- Conditional statements
- If–else
- All mean the same thing in Angular.
Using Signal for Condition
Angular 21 recommends signals instead of normal properties.
Signal creation
isLogin = signal(true);
truemeans user is logged in by default- Signal must be imported before use
Basic @if Condition
@if (isLogin()) {
<span>Welcome User</span>
}
- Signal is used as a function:
isLogin() - If value is
true, content is shown - If
false, content is hidden
@if with @else
@if (isLogin()) {
<span>Welcome User</span>
} @else {
<span>Please Login</span>
}
- Shows different content based on login status
Login / Logout Toggle with Button
HTML
<button (click)="handleLogin(false)">Logout</button>
<button (click)="handleLogin(true)">Login</button>
TypeScript
handleLogin(status: boolean) {
this.isLogin.set(status);
}
- Clicking button changes signal value
- UI updates automatically
Show and Hide (Toggle)
Signal
show = signal(true);
HTML
@if (show()) {
<button (click)="show.set(false)">Hide</button>
} @else {
<button (click)="show.set(true)">Show</button>
}
- No function needed
- Signal value is set directly
- Used for basic show/hide UI
Multiple Conditions (Status Example)
Signal
status = signal('not-started');
Possible values:
- not-started
- in-progress
- success
- error
HTML with Multiple Conditions
@if (status() === 'not-started') {
<span>Not Started</span>
} @else if (status() === 'in-progress') {
<span>In Progress</span>
} @else if (status() === 'success') {
<span>Success</span>
} @else {
<span>Error</span>
}
- Used for handling multiple states
- Each condition shows different output
Change Status Using Dropdown
HTML
<select (change)="handleStatus($event)">
<option value="not-started">Not Started</option>
<option value="in-progress">In Progress</option>
<option value="success">Success</option>
<option value="error">Error</option>
</select>
TypeScript
handleStatus(event: Event) {
const target = event.target as HTMLSelectElement;
this.status.set(target.value);
}
- Dropdown change updates signal
- UI updates based on selected value