Reputation: 2179
I'm very new to Angular.
I want to load a child component conditionally within a component by clicking button. On button click, it should re-render the respective child component.
HTML code
<div class="tab">
<button class="tablinks" (click)="onTabClick('0')">Transmit</button>
<button class="tablinks" (click)="onTabClick('1')">Published</button>
<button class="tablinks" (click)="onTabClick('2')">Bulk Transmit</button>
</div>
<div>
<app-sports *ngIf="tabIndex === 0"></app-sports>
<app-movies *ngIf="tabIndex === 2"></app-movies>
</div>
TS file
tabIndex = 2 ;
onTabClick(index){
this.tabIndex = index;
}
Upvotes: 1
Views: 11147
Reputation: 1022
you are passing parameters 0,1,2 like strings and checking condition with ===
it' also checking type (means sting or number)
Possible solutions:
place ==
instead of ===
change argumens '1'
to 1
, '2'
to 2
Upvotes: 1
Reputation: 1778
you have passed string as argument but checking numbers in tab. you can check on stackblitz link:
<div class="tab">
<button class="tablinks" (click)="onTabClick(0)">Transmit</button>
<button class="tablinks" (click)="onTabClick(1)">Published</button>
<button class="tablinks" (click)="onTabClick(2)">Bulk Transmit</button>
</div>
<div>
<app-sports *ngIf="tabIndex === 0"></app-sports>
<app-movies *ngIf="tabIndex === 2"></app-movies>
</div>
Upvotes: 5
Reputation: 73
You are passing 0,1,2 as string in the onTabClick(), whereas in the .ts file you have tabIndex as integer.
Upvotes: 0