美文网首页
NG-ZORRO tabs标签页频繁切换导致组件崩溃的解决方式

NG-ZORRO tabs标签页频繁切换导致组件崩溃的解决方式

作者: 躺赢lu | 来源:发表于2019-05-07 18:41 被阅读0次

    解决方式简单睿智,就是加两个计时器。

    HTML代码:

    <nz-tabset [nzSelectedIndex]="selectedIndex" (nzSelectChange)="chooseTab($event)">
        <!-- tab1 -->
        <nz-tab [nzTitle]="'terminal-patch.name' | translate" [nzDisabled]="dis1">
         ...
        </nz-tab>
        <!--tab2 -->
        <nz-tab [nzTitle]="'terminal-patch.patch-log' | translate" [nzDisabled]="dis2">
          ...
        </nz-tab>
      </nz-tabset>
    

    这里可以看到绑定的是ngzorro内置的一些属性和方法:

    • nz-tabset:
      • nzSelectedIndex 获取当前tab页的index
      • nzSelectChange 切换tabs的函数
    • nz-tab :
      • nzDisabled - 是否可以点击tab页,用于控制切换

    好,TS代码:

      public clickTime1:any = null;  // 定义计时器
      public clickTime2:any = null;
      public dis1:boolean = false;  // 定义切换boolean
      public dis2:boolean = false;
    
    chooseTab (value) {         // 切换的函数 好奇 宝宝们可以log一下value的值是啥
        if (value.index === 0) {
            this.dis2 = true;        // 在切换的到第一页的时候,把第二页的切换按钮禁用,让它不可点
            this.selectedIndex = value.index;
            ...
            this.clickTime1 = setInterval( ()=> {    // 然后在1秒后解禁,强行阻止频繁点击
              this.dis(1) 
            },1000)
        } else if (value.index === 1){    // 同理 
            this.dis1 = true;
            this.selectedIndex = value.index;
            ...
            this.clickTime2 = setInterval( ()=> {
              this.dis(2)
            },1000)
        }
      }
      
      // 取消计时器
      dis (num:number) {
        if (num === 1) {
          this.dis2 = false;
          clearInterval(this.clickTime1);
        } else if (num === 2) {
          this.dis1 = false;
          clearInterval(this.clickTime2);
        }
      }
    

    大概就是这样,欢迎小伙伴们在评论区沟通,提出更好的方法~

    相关文章

      网友评论

          本文标题:NG-ZORRO tabs标签页频繁切换导致组件崩溃的解决方式

          本文链接:https://www.haomeiwen.com/subject/zavyoqtx.html