'Angular 8 hide divs and show div on button click
I am new to angular and having an issue with hide and show content. I have 3 buttons, button A, button B and button c. When i click on button A, the content of the button A ie div A should be visible,the content of button B ie div B and button C ie div C should hide like that.
But i can display the respective divs when clicked on the respective buttons, but i am not able to hid the other two divs.
Can any one help me out.
Thanks in advance.
Please find below the code which i am trying out.
previousWeekData(){
console.log("Previous Button Clicked");
this.isShow = !this.isShow;
}
nextWeekData(){
console.log("Next Button Clicked");
this.isShow = !this.isShow;
}
todaysWeekData(){
console.log("Todays Button Clicked");
this.isShow = !this.isShow;
}
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="btn-group">
<div class="btn btn-dark" [(viewDate)]="viewDate" (click)="previousWeekData()">
Previous
</div>
<div class="btn btn-outline-secondary" (click)="todaysWeekData()">
Today
</div>
<div class="btn btn-dark" [(viewDate)]="viewDate" (click)="nextWeekData()">
Next
</div>
</div>
</div>
</div>
<div class="row">
<div *ngIf = "isShow">Previous week datay.</div>
<div *ngIf = "!isShow">Next week data.</div>
<div *ngIf = "isShow">Current week data</div>
</div>
</div>
Solution 1:[1]
<div *ngIf="div1">
ABC
</div>
<div>
DEF
</div>
<div>
GHI
</div>
<button (click)="div1Function()"></button>
<button (click)="div2Function()"></button>
<button (click)="div3Function()"></button>
TS FILE
div1:boolean=true;
div2:boolean=true;
div3:boolean=true;
div1Function(){
this.div1=true;
this.div2=false;
this.div3=false
}
div2Function(){
this.div2=true;
this.div1=false;
this.div3=false
}
div3Function(){
this.div3=true;
this.div2=false;
this.div1=false
}
Solution 2:[2]
Try like this:
Template:
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="btn-group">
<div class="btn btn-dark"
(click)="showDiv.previous = !showDiv.previous;showDiv.current = false;showDiv.next = false">
Previous
</div>
<div class="btn btn-outline-secondary"
(click)="showDiv.current = !showDiv.current;showDiv.previous = false;showDiv.next = false">
Today
</div>
<div class="btn btn-dark" (click)="showDiv.next = !showDiv.next;showDiv.previous = false;showDiv.current = false">
Next
</div>
</div>
</div>
</div>
<div class="row">
<div *ngIf="showDiv.previous">Previous week datay.</div>
<div *ngIf="showDiv.next">Next week data.</div>
<div *ngIf="showDiv.current">Current week data</div>
</div>
</div>
TS:
showDiv = {
previous : false,
current : false,
next : false
}
Solution 3:[3]
You can easily do this by maintaining a component class property currDiv and initialize it to A.
In your conponent template, you can have a button to show a div as
<button type="button" (click)="ShowDiv('A')">Show A</button>
and in the template class, you can set the `currDiv as
ShowDiv(divVal: string) {
this.currDiv = divVal;
}
and you can control the div visibility as
<div *ngIf="currDiv == 'A'">
Div A
</div>
StackBlitz at: https://stackblitz.com/edit/angular-showdivonclicktoggle
Solution 4:[4]
In .ts file
show = 'A';
In .html
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="btn-group">
<div class="btn btn-dark" [(viewDate)]="viewDate" (click)="show = 'A'">
Previous
</div>
<div class="btn btn-outline-secondary" (click)="show = 'B'">
Today
</div>
<div class="btn btn-dark" [(viewDate)]="viewDate" (click)="show = 'C'">
Next
</div>
</div>
</div>
</div>
<div class="row">
<div *ngIf = "isShow == 'A'">Previous week datay.</div>
<div *ngIf = "isShow == 'B'">Next week data.</div>
<div *ngIf = "isShow == 'C'">Current week data</div>
</div>
</div>
Solution 5:[5]
**IN HTML FILE :**
<div *ngIf="div1">
ABC
</div>
<div>
DEF
</div>
<div>
GHI
</div>
<button (click)="div1Function()">Button 1</button>
<button (click)="div2Function()">Button 2</button>
<button (click)="div3Function()">Button 3</button>
**IN TS FILE :**
div1:boolean=true;
div2:boolean=true;
div3:boolean=true;
div1Function(){
this.div1=true;
this.div2=false;
this.div3=false
}
div2Function(){
this.div2=true;
this.div1=false;
this.div3=false
}
div3Function(){
this.div3=true;
this.div2=false;
this.div1=false
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | MaBbKhawaja |
| Solution 2 | Adrita Sharma |
| Solution 3 | Saksham |
| Solution 4 | |
| Solution 5 | Kaji Islam |
