如何激活(nav选项卡)Bootstrap Twitter(Angular 2)

Ang*_*gel 7 twitter-bootstrap angular

我有一个导航,Twitter Bootstrap,在其中一个标签内(#B ..),我有一个图像,点击它更改为另一个标签(#C ..).

我可以更改该选项卡,但我不能,新选项卡(#C ..)设置为活动状态.并且此图片选项卡(#B ..)设置为停用.(例如removeClass active)

<ul class="nav nav-tabs">
    <li class="nav active"> <a [attr.href]="'#A' + cObj" data-toggle="tab"> Info </a></li>
    <li class="nav">        <a [attr.href]="'#B' + cObj" data-toggle="tab"> Info </a></li>
    <li class="nav">        <a [attr.href]="'#C' + cObj" data-toggle="tab"> Info </a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
<div class="tab-pane fade"           [id]="'B' + cObj">
..//

<a [attr.href]="'#C' + cObj" data-toggle="tab">
<img...>
..//
Run Code Online (Sandbox Code Playgroud)

我尝试过以[class.active] =" false "各种方式使用它,例如[ '#B' + cObj.class.active] =" false ",但我不能,有什么可以帮助我的.

我希望能够激活和停用标签,从一个切换到另一个,我很抱歉我的英语不好我希望你理解我的问题


更新:我使用以下内容解决了.

也许用户的回应可以更好地帮助他人:


<ul class="nav nav-tabs">
    <li class="nav active" [id]="'IDA' + contadorObjet.name" [class.active]="testLocation1() == ('A' + contadorObjet.name) || '10'" >       <a [attr.href]="'#A' + contadorObjet.name" data-toggle="tab"> Info </a></li>
    <li class="nav"        [id]="'IDB' + contadorObjet.name" [class.active]="testLocation1() == 'B' + contadorObjet.name">                  <a [attr.href]="'#B' + contadorObjet.name" data-toggle="tab"> Info </a></li>
    <li class="nav"        [id]="'IDC' + contadorObjet.name" [class.active]="testLocation1() == 'C' + contadorObjet.name">                  <a [attr.href]="'#C' + contadorObjet.name" data-toggle="tab"> Info </a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

注意:'10'是测试的ID父级


<a [attr.href]="'#C' + contadorObjet.name" data-toggle="tab" 
   #elem (click)="testLocationAct(elem.href, 'IDB' + contadorObjet.name)" >
Run Code Online (Sandbox Code Playgroud)
    testLocation1():string{
      //alert(document.activeElement.toString().split(/#(.+)?/)[1]);
      return document.activeElement.toString().split(/#(.+)?/)[1];
    }

    testLocationAct(test: any, test1: any){

      document.getElementById(test1).classList.remove('active');
      document.activeElement = test;
    }
Run Code Online (Sandbox Code Playgroud)

更新:

你可以添加一个plunker吗?我正在尝试侧边栏数据切换,它不起作用 - 加里

Plunker

在它发布之前它能够很好地发挥作用之后,我做了一些改动,现在效果更好(我想).

<div class="container" *ngFor="#contadorObjeto of contadorObjetos ; #contadorObjetoI = index" nginit="test='#' id=10">

              <ul class="nav nav-tabs">
                <li class="nav active" [id]="'IDA' + contadorObjeto.name" ([class.active])="testLocation1() == ('A' + contadorObjeto.name) || '10'">        <a [attr.href]="'#A' + contadorObjeto.name" data-toggle="tab"> Info </a></li>
                <li class="nav"        [id]="'IDB' + contadorObjeto.name" ([class.active])="testLocation1() == 'B' + contadorObjeto.name">                  <a [attr.href]="'#B' + contadorObjeto.name" data-toggle="tab"> Info </a></li>
                <li class="nav"        [id]="'IDC' + contadorObjeto.name" ([class.active])="testLocation1() == 'C' + contadorObjeto.name">                  <a [attr.href]="'#C' + contadorObjeto.name" data-toggle="tab"> Info </a></li>
              </ul>

              <div class="tab-content">

                <div class="tab-pane fade in active" [id]="'A' + contadorObjeto.name">Content inside tab A
                  {{ contadorObjeto.name }}
                </div>

                <div class="tab-pane fade in " [id]="'B' + contadorObjeto.name">Content inside tab B 
                  <a [attr.href]="'#C' + contadorObjeto.name" data-toggle="tab" #elem (click)="testLocationAct(elem.href, 'IDB' + contadorObjeto.name)" >
                      <img class="img-responsive"
                      height = "230" width = "230"
                      src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Free_logo.svg/200px-Free_logo.svg.png" />
                  </a>
                </div>

                <div class="tab-pane fade in " [id]="'C' + contadorObjeto.name">Content inside tab C 
                </div>
              </div>    

            </div>
Run Code Online (Sandbox Code Playgroud)
    testLocation1():string{
      //alert(document.activeElement.toString().split(/#(.+)?/)[1]);
      return document.activeElement.toString().split(/#(.+)?/)[1];
    }

    testLocationAct(test: any, test1: any){

      liNavID = "ID" + test.toString().split(/#(.+)?/)[1];

      document.getElementById(test1).classList.remove('active');
      document.getElementById(liNavID).classList.add('active');

      //console.log(liNavID);
    }
Run Code Online (Sandbox Code Playgroud)

我已经调整了样本,新代码使其看起来与之前类似.您可以单击选项卡2内的图像进行测试.

我希望能帮助你.

Thi*_*ier 5

我将创建一个包含所有导航元素的数组。导航元素将具有活动属性。

您的nav元素将创建一个循环:

<ul class="nav nav-tabs">
  <li *ngFor="#tab of tabs" class="nav active"
      [ngClass]="{active:tab.active}">
    <a> Info </a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

当您单击导航时,将执行此方法

selectNav(nav) {
  this.navs.forEach((nav) => {
    nav.active = false;
  });
  nav.active = true;
}
Run Code Online (Sandbox Code Playgroud)

该方法将链接到导航元素,如下所示:

<ul class="nav nav-tabs">
  <li ngFor="#tab of tabs" (...)>
    <a (click)="selectNav(nav)>
      Info
    </a>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我认为这篇文章可以为您提供帮助:


Gün*_*uer 1

您不能动态构建属性名称。改用ngClass

<li ngClass="{'active': isActive}">
Run Code Online (Sandbox Code Playgroud)

另请参阅:
- https://angular.io/docs/ts/latest/api/common/NgClass-directive.html
- /sf/answers/2359967711/