【问题标题】:Angular 8 hide divs and show div on button clickAngular 8隐藏div并在按钮单击时显示div
【发布时间】:2020-02-23 15:34:47
【问题描述】:

我是 Angular 新手,并且遇到了隐藏和显示内容的问题。 我有 3 个按钮,按钮 A、按钮 B 和按钮 c。当我点击按钮 A 时,按钮 A 的内容,即 div A 应该是可见的,按钮 B 的内容,即 div B 和按钮 C 的内容,即 div C 应该像这样隐藏。

但我可以在单击相应按钮时显示相应的 div,但我无法隐藏其他两个 div。

谁能帮帮我。

提前致谢。

请在下面找到我正在尝试的代码。

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>

【问题讨论】:

  • 所以你想要三个按钮每次点击显示一个 div? IE: button1 显示 div1, button2 显示 div2 和 button3 显示 div3 ? (另外两个div是隐藏的:点击按钮A -> 显示divA并隐藏divB和divC,点击按钮C -> 显示divC并隐藏divA和divB),对吧?

标签: angular show-hide


【解决方案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 文件

    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
    }

【讨论】:

    【解决方案2】:

    试试这样:

    Working Demo

    模板:

    <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
    }
    

    【讨论】:

      【解决方案3】:

      您可以通过维护组件类属性currDiv 并将其初始化为A 轻松做到这一点。

      在你的组件模板中,你可以有一个按钮来显示一个 div

      <button type="button" (click)="ShowDiv('A')">Show A</button>
      

      在模板类中,你可以将`currDiv设置为

      ShowDiv(divVal: string) {
          this.currDiv = divVal;
      }
      

      你可以控制 div 的可见性

      <div *ngIf="currDiv == 'A'">
          Div A
      </div>
      

      StackBlitz:https://stackblitz.com/edit/angular-showdivonclicktoggle

      【讨论】:

        【解决方案4】:

        在 .ts 文件中

        show = 'A';
        

        在.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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-14
          • 2013-01-16
          • 2018-03-17
          • 2016-05-21
          • 1970-01-01
          • 1970-01-01
          • 2013-04-24
          • 1970-01-01
          相关资源
          最近更新 更多