0

我目前正在尝试显示具有不同背景颜色的口袋妖怪列表,具体取决于它们的类型。我想实现一个功能,其中所选口袋妖怪的边框也显示为金色边框颜色。如果我一次使用它们,它们工作得很好,但我在一起使用它们时遇到了麻烦。

我的html如下:

<h1>Pokédex</h1>
<p [hidden]="!selectedPokemon">Geselecteerde pokemon: {{selectedPokemon}}</p>
<div class="wrapper">
  <app-pokemon (selectedPokemon)="highlightPokemon($event)"
               *ngFor="let item of pokemons"
               [pokemon]="item"
               [ngClass]="{getType(item.type), item.name === selectedPokemon ? 'select' : ''}">
  </app-pokemon>
</div>

我的 getType 函数如下:

getType(pokemonType: string): string {
    pokemonType = pokemonType.toLowerCase();
    switch(pokemonType) {
      case 'grass': {
        return 'grass'
      }
      case 'fire': {
        return 'fire'
      }
      case 'water': {
        return 'water'
      }
      default: {
        return 'grass'
      }
    }
  }

我的 IDE 抱怨的错误:

在此处输入图像描述

我还尝试了以下方法:

[ngClass]="getType(item.type), item.name === selectedPokemon ? 'select' : ''">

在此处输入图像描述

非常感谢您的帮助!

4

3 回答 3

0

您可以使用 [className]="getType(item.type)" 和 [class.select]="item.name === selectedPokemon"

于 2021-11-01T08:53:39.127 回答
0
<h1>Pokédex</h1>
<p [hidden]="!selectedPokemon">Geselecteerde pokemon: {{selectedPokemon}}</p>
<div class="wrapper">
<app-pokemon (selectedPokemon)="highlightPokemon($event)"
           *ngFor="let item of pokemons"
           [pokemon]="item"
class="{{getType(item.type)}}"
           [ngClass]="item.name === selectedPokemon ? 
'select' : ''">
</app-pokemon>
</div>

这是工作代码,我所做的是选择的类将来自 ngclass 而背景类将来自 getType 函数

于 2021-11-01T10:15:41.553 回答
0

在 html 模板中使用函数是一种不好的做法,尽量不要使用它们。但是您可以像这样使用 ngClass 有条件地添加多个类

<div [ngClass]="[yourFunction(value), value === 2 && 'your-class']">123</div>
于 2021-11-01T10:41:52.487 回答