ngclass无法正常工作在角度6

时间:2018-10-06 04:18:14

标签: angular angular-ng-class

我正在尝试根据数组中存在的值更改[ngclass]字段的值,但它无法正常工作。 html代码如下:

<ul>
                  <li [ngClass]="{active: uniqueIds == corporate }">
                    <a href="/questionnaire/"> 
                      <span class="icons">
                        <i class="fas fa-users"></i>
                    </span> 
                      <span>Corporate</span> 
                    </a>
                  </li>
                  <li id="dispatchLocations" [ngClass]="{active: uniqueIds == dispatchLocations}">
                    <a href="/questionnaire/three/"> 
                      <span class="icons">
                        <i class="fas fa-map-marked-alt"></i>
                    </span> 
                      <span>Dispatch locations  </span> 
                    </a>
                  </li>
</ul>

上面的代码uniqueIds中是一个数组,其填充如下:

private message = [];
private questionLiId: any;
liIds: Array<any>;
  public uniqueIds : Array<any>;
 constructor(private sharedMessage: ShareMessageService) {
    this.liIds =[];
    this.uniqueIds=[];
  }
ngOnInit() {
    this.sharedMessage.shareMessage$.subscribe((data) => {
      this.message = data;
      this.questionLiId=this.message[4];
      setTimeout(()=>{
        this.liIds.push(this.questionLiId);
        this.uniqueIds =Array.from(new Set(this.liIds));
        console.log("Unique Li Ids =>"+this.uniqueIds);
      },0)
    })
  }

当我在控制台中看到唯一的liid时,打印如下:

Unique Li Ids =>corporate,dispatchLocations

当我检查html代码时,将显示以下内容:

<li _ngcontent-c4="" ng-reflect-ng-class="[object Object]">Corporate</li>

有人可以帮助我解决角度6中的问题吗?我无法更改ngclass的值。到目前为止,我已经尝试了以下解决方案:

[ngClass]="{active: uniqueIds.indexOf() == corporate }"

[ngClass]="{active: uniqueIds.contains == corporate }"

[ngClass]="{active: uniqueIds.container == corporate }"

[ngClass]="{active: uniqueIds.value == corporate }"

[ngClass]="{active: uniqueIds == corporate }"

[ngClass]="{uniqueIds == corporate ? 'active':'inactive }"

但是以上这些都不适合我。

3 个答案:

答案 0 :(得分:0)

linear layout manager应该是一个字符串:

2018-10-06 06:10:15.919 11033-11033/com.example.karem.moviesdatabase E/q: 0  
2018-10-06 06:10:15.919 11033-11033/com.example.karem.moviesdatabase E/q: 18

答案 1 :(得分:0)

尝试从控制器调用方法

[ngClass]="getLiClass(uniqueIds, 'corporate')"
控制器中的

。添加该功能:

   getLiClass(uniqueIds, testValue) {
     return uniqueIds.contains(testValue) ? 'active':'inactive';
   }

答案 2 :(得分:0)

尝试这个..因为uniqueIds是一个数组,所以需要搜索它的索引。我认为那是更简单的方法

 <li [ngClass]="{'active': uniqueIds.indexOf('corporate')!= -1 }">

有关更多信息,请点击此链接https://angular.io/api/common/NgClass#ngclass