首页 > 解决方案 > 带有 Angular2 的 vmwClarity 中的 CrlTab

问题描述

我在 Angular2 -> vmwCLARITY 中有一个包含月份的列表。

我的问题是我希望默认第一个月处于活动状态,但我得到或选择了最后一个月->

代码 HTML --->>>>

在这里,我得到 1 个带有布尔值的对象,然后我使用一个函数来激活我的 crl-tab。另外,我禁用了几个月。然后我需要选择启用的第一个月。

所有月份的代码都是相同的。

<clr-tabs>
    <clr-tab>
        <button clrTabLink id="january"  [disabled]="!selectedMonths.jan" (click)="changeMonth(1)">Enero</button>
        <clr-tab-content id="january" *clrIfActive="isActive(selectedMonths.jan)">
        </clr-tab-content>
    </clr-tab>
    <clr-tab>
        <button clrTabLink id="february"  [disabled]="!selectedMonths.feb" (click)="changeMonth(2)">Febrero</button>
        <clr-tab-content id="february" *clrIfActive="isActive(selectedMonths.feb)">
        </clr-tab-content>
    </clr-tab>
    <clr-tab>
        <button clrTabLink id="march"   [disabled]="!selectedMonths.mar" (click)="changeMonth(3)">Marzo</button>
        <clr-tab-content *clrIfActive="isActive(selectedMonths.mar)">
        </clr-tab-content>
    </clr-tab>
    <clr-tab>
        <button clrTabLink id="april"  [disabled]="!selectedMonths.apr" (click)="changeMonth(4)">Abril</button>
        <clr-tab-content *clrIfActive="isActive(selectedMonths.apr)">
        </clr-tab-content>
    </clr-tab>
    <clr-tab>
        <button clrTabLink id="may"   [disabled]="!selectedMonths.may" (click)="changeMonth(5)">Mayo</button>
        <clr-tab-content *clrIfActive="isActive(selectedMonths.may)">
        </clr-tab-content>
    </clr-tab>
    <clr-tab>
        <button clrTabLink id="june"  [disabled]="!selectedMonths.jun" (click)="changeMonth(6)">Junio</button>
        <clr-tab-content *clrIfActive="isActive(selectedMonths.jun)">
        </clr-tab-content>
    </clr-tab>
    <clr-tab>
        <button clrTabLink id="juli"   [disabled]="!selectedMonths.jul" (click)="changeMonth(7)">Julio</button>
        <clr-tab-content *clrIfActive="isActive(selectedMonths.jul)">
        </clr-tab-content>
    </clr-tab>
    <clr-tab>
        <button clrTabLink id="august" [disabled]="!selectedMonths.aug" (click)="changeMonth(8)">Agosto</button>
        <clr-tab-content *clrIfActive="isActive(selectedMonths.aug)">
        </clr-tab-content>
    </clr-tab>
    <clr-tab>
        <button clrTabLink id="september" [disabled]="!selectedMonths.sep" (click)="changeMonth(9)">Septiembre</button>
        <clr-tab-content *clrIfActive="isActive(selectedMonths.sep)">
        </clr-tab-content>
    </clr-tab>
    <clr-tab>
        <button clrTabLink id="october"   [disabled]="!selectedMonths.oct" (click)="changeMonth(10)">Octubre</button>
        <clr-tab-content *clrIfActive="isActive(selectedMonths.oct)">
        </clr-tab-content>
    </clr-tab>
    <clr-tab>
        <button clrTabLink id="november"  [disabled]="!selectedMonths.nov" (click)="changeMonth(11)">Noviembre</button>
        <clr-tab-content *clrIfActive="isActive(selectedMonths.nov)">
        </clr-tab-content>
    </clr-tab>
    <clr-tab>
        <button clrTabLink id="december"   [disabled]="!selectedMonths.dec" (click)="changeMonth(12)">Diciembre</button>
        <clr-tab-content *clrIfActive="isActive(selectedMonths.dec)">
        </clr-tab-content>
    </clr-tab>
</clr-tabs>

组件.ts ->

 public selectedMonths = this.service.months;
 // Usada para que la marca roja se posicione en el primer mes activo
 public redMark: boolean = false;


    isActive(month: boolean) { 
        if (!this.redMark && month) {
            this.redMark = true;
            return true;
        } else {
            return false;
         }
    }

 changeMonth() {
        this.redMark = false;
}

在这里,我从 service.ts 中获取 Object->moths,我使用布尔值来停止红色标记。

现在我遇到了一个问题,因为所有月份都有 *clrIfActive = false,我选择了第一个月,但现在我无法更改其他月份...

示例->

在此处输入图像描述

我的红色标记从 Julio 开始,完美,但如果我在 12 月点击,我的红色标记在 Julio .....

我把它改成了 -->

isActive(month: boolean) { 
      return month;
}

现在我的用户可以选择其他月份,问题是红色标记是在 12 月....

示例--->

在此处输入图像描述

现在我可以选择其他月份,但问题是我的应用程序在上个月启用了红色标记......


我需要在第一个月启用红色标记的启动应用程序。

谢谢。

编辑->

更改月份-> 我为我的用户选择了月份,然后我调用了 fecht 数据,因为我可以获得该月的数据。

 public changeMonth = function (month: number) {
        this.redMark = false;
        this.month = month;
        this.fetchData();
    }

      fetchData(){
         this.service.getDataMonth(this.month).subscribe(
                data => {
                    this.params = data;
                    });
      }

标签: angularvmware-clarityclarity

解决方案


默认情况下,除非您另外指定,否则将显示第一个选项卡。

在您的情况下,您希望拥有*clrIfActive="true"第一个非禁用选项卡。由于您没有共享组件的代码,因此我无法为您提供帮助,但是在几个月内迭代以找到它应该不会太难。


推荐阅读