Ngx-динамическое значение компонента оценки начальной загрузки

#css #angular #ngx-bootstrap #rating

#css — код #угловатый #ngx-bootstrap #Оценка

Вопрос:

работая с этим удивительным компонентом, я дошел до того, что мне нужен раздел с рейтингом. этот раздел рейтинга по умолчанию имеет 5 звезд, а числовое значение поступает из вызова Api.

Мне нужно, чтобы эти звезды были заполнены желтым цветом. например :

если значение звезды равно 3 :

[проверено] [проверено] [проверено] [] [] * проверено желтыми звездами, а пустой массив — остальными 5 звездами.

пока я искал решение, я обнаружил, что ng-starring обладает этой функцией. у него есть селектор «Value», который вы можете интегрировать с ngFor

программное обеспечение valor Ngx-bootstrap не предоставляет такой функции.

Ответ №1:

Вы можете создать пользовательский канал:

Команда Angular CLI для создания канала. Введите эту команду в консоли, чтобы создать канал:

ng g pipe pipes/transformRatingStarts

  • ng означает Angular CLI
  • g означает генерировать
  • каналы означают имя папки, в которой будет находиться канал
  • transformRatingStarts означает имя канала

Код для вашего канала. Простой переключатель: (transform-rating-starts.pipe.ts)

     import { Pipe, PipeTransform } from '@angular/core';
...
    @Pipe({
      name: 'transformRatingStarts'
    })

    export class TransformRatingStartsPipe implements PipeTransform {

      transform(value: number): string {

      let response='';

       switch(value) {

          case:1
             reponse="[*] [] [] [] []";
             break;

          case:2
             reponse="[*] [*] [] [] []";
             break;

          case:3
             reponse="[*] [*] [*] [] []";
             break;
          
          case:4
             reponse="[*] [*] [*] [*] []";
             break;

          case:5
             reponse="[*] [*] [*] [*] [*]";
          break;

          default:
             reponse="[] [] [] [] []";
             break;

       }

        return response;

      }
    }
 

В вашем HTML просто добавьте канал:

 {{ yourStarValueNumericVariable | transformRatingStarts }}
 

ПРИМЕЧАНИЕ: вы должны импортировать свой канал в свой app.module.ts (или в модуль, который вы хотите использовать):

 ...
import { TransformRatingStartsPipe } from '.pipes/bank-name-image.pipe';
...

declarations: [
  AppComponent,
  ...
  TransformRatingStartsPipe ,
  ...
],
 

Вы всегда можете просто запустить консольную команду:

ng генерирует каналы / transformRatingStarts

и Angular CLI создаст для вас файл ‘transform-rating-starts.pipe.ts’ с базовой структурой и автоматически импортирует его в модуль.

Затем вам нужно будет только заполнить этот файл канала моим кодом.

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

1. спасибо @JuanVicenteBerzosaTejero , вы проделали отличную работу, объяснив это, но для этой конкретной проблемы я выбрал канал toArray и преобразовал номер рейтинга в массив. затем просто покажите рейтинг с помощью директивы *ngFor.