Добавление определенных цветов к строкам таблицы на основе различных сверхспособностей героя

#html #css #angular

#HTML #css #angular

Вопрос:

Я хочу убедиться, что строки таблицы имеют цвета, основанные на сверхспособностях героя. Например, если герой обладает суперсилой, его цветом строки будет color: red, если цвет строки FLying будет color: blue

Я не могу связать данные вместе и создать цвета строк на основе сверхспособности героя.

 <table>
  <tr>
    <th>Hero ID</th>
    <th>Hero Name</th>
    <th>Gender</th>
    <th>Age</th>
    <th>Superpower</th>
    <th>Delete</th>
  </tr>
  <tr *ngFor="let hero of heroes">
    <a routerLink="/detail/{{hero.id}}">
      <td><span class="badge">{{hero.id}}</span></td>
      <td><span class="badge">{{hero.name}}</span></td>
      <td><span class="badge">{{hero.gender}}</span></td>
      <td><span class="badge">{{hero.age}}</span></td>
      <td><span class="badge">{{hero.superpowers}}</span></td>
    </a>
    <td><button class="delete" title="delete hero" (click)="delete(hero)">X</button></td>
  </tr> 
</table>
  

Комментарии:

1. пожалуйста, поделитесь ключами объекта heroes

2. Являются ли сверхспособности массивом?

3. смотрите пример ответа: stackblitz.com/edit/hello-angular-6-bddw1t?file=src/app /…

Ответ №1:

Лучший способ изменить цвет в зависимости от условий вы можете использовать ngStyle директиву, подобную приведенной ниже.

component.html

 <tr *ngFor="let hero of heroes" [ngStyle]="{'background-color':getColor(hero.superpowers)}" >
              <a routerLink="/detail/{{hero.id}}">
    <td><span class="badge">{{hero.id}}</span></td>
    <td><span class="badge">{{hero.name}}</span></td>
    <td><span class="badge">{{hero.gender}}</span></td>
    <td><span class="badge">{{hero.age}}</span></td>
    <td><span class="badge">{{hero.superpowers}}</span></td>
  </a>
    <td><button class="delete" title="delete hero"
        (click)="delete(hero)">X</button></td>

      </tr>
  

component.ts

   getColor(superpower) {
    console.log(superpower);
    switch (superpower) {
      case 'strength':
        return 'red';
      case 'FLying':
        return 'blue';
    }
  }
  

Вот демонстрация на stackblitz

Надеюсь, это поможет!

Ответ №2:

Вы можете использовать ngStyle, как показано ниже

 <tr *ngFor="let hero of heroes" 
[ngStyle]="{'background-color': hero.superpowers == 'flying'? 'blue': 'red' }">
  

Комментарии:

1. Я просто хочу опубликовать свой пример и увидеть ваш ответ: stackblitz.com/edit/hello-angular-6-bddw1t?file=src/app /…

2. У меня есть и другие сверхспособности, например, 8 из них, поэтому всякий раз, когда пользователь изменяет сверхспособности героя, они будут соответствовать этому определенному цвету. итак, 8 героев имеют 8 разных цветов строк