Угловой материал; mat-select отображать выбранный цвет

У меня есть этот фрагмент кода для отображения списка цветов, которые может выбрать пользователь:

<form>
    <h4>mat-select</h4>
    <mat-form-field appearance = "fill">
        <mat-label>Favorite Color</mat-label>
        <mat-select [(ngModel)] = "selectedValue" name = "food">
            <mat-option *ngFor = "let color of allColors" [value] = "'#' + color.value">
                <!-- {{color.label}}  -->
                <span class = "color-span" [ngStyle] = "{ 'background-color': '#' + color.value }"></span>
            </mat-option>
        </mat-select>
    </mat-form-field>

</form>

import {Component} from '@angular/core';
/**
 * @title Select in a form
 */
@Component({
  selector: 'select-form-example',
  templateUrl: 'select-form-example.html',
})
export class SelectFormExample {
  public allColors: any[] = [
  {label: 'FFFFFF', value: 'FFFFFF'},
  {label: '000000', value: '000000'},
  {label: '603813', value: '603813'},
  {label: 'FF0000', value: 'FF0000'},
  {label: '2E3192', value: '2E3192'},

  {label: '006837', value: 'FFD400'},
  {label: 'F15A24', value: 'F15A24'},
  {label: 'CCCCCC', value: 'CCCCCC'},
  {label: 'DBC0B5', value: 'DBC0B5'},
  {label: 'FAB49B', value: 'FAB49B'},

  {label: '87B2C7', value: '87B2C7'},
  {label: 'ACD58A', value: 'ACD58A'},
  {label: 'FFF9AE', value: 'FFF9AE'}
];
}

Это работает, как вы видите на изображении ниже. Но я не знаю, как отобразить выбранный цвет в элементе управления mat-select.

Демо

можешь связать стекблиц?

Moshezauros 15.12.2020 06:37

Да, я изменил свой вопрос, и вы можете найти ссылку там

amin mohammadi 15.12.2020 06:52

поэтому, если пользователь выберет первое значение, которое вы хотите отобразить «FFFFFF» в поле выбора?

Vimal Patel 15.12.2020 07:15

Нет, мне нужно показать сам цвет вместо метки

amin mohammadi 15.12.2020 07:21

Итак, как и в раскрывающемся списке, мы можем видеть цвет только таким же образом после выбора, правильно?

Vimal Patel 15.12.2020 07:31

Да, я просто хочу отображать цвет, а не шестнадцатеричный код

amin mohammadi 15.12.2020 07:32
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
6
4 850
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

mat-select устанавливает значение и отображает метку выбранного вами mat-option, однако он будет отображать только текст из этого выбора, поскольку вы не показываете текст в своих метках, ничего не отображается при выборе одного из вариантов.

Вы можете добавить метку для своего цвета в элементы mat-option, а затем, как только вы выберете что-то, этот текст появится в элементе mat-select. Если вам нужно визуальное представление цвета — вы можете показать значение за пределами элемента mat-select (может быть, справа?).

Вы также можете рассмотреть возможность изменения метки в вашем массиве с шестнадцатеричного значения на имя цвета, например. {label: 'FFFFFF', value: 'FFFFFF'}, к {label: 'White', value: 'FFFFFF'},

Вот фрагмент, который показывает предложение:

<mat-select [(ngModel)] = "selectedValue" name = "food">
    <mat-option *ngFor = "let color of allColors" [value] = "'#' + color.value">
        <!-- {{color.label}}  -->
        <span class = "color-span" [ngStyle] = "{ 'background-color': '#' + color.value }"></span>
        {{ color.label }}
    </mat-option>
</mat-select>
Ответ принят как подходящий

Если вы хотите настроить выбранное значение, это селектор, который вы можете использовать mat-select-trigger. Это позволяет вам настроить триггер, который отображается, когда выбор имеет значение.

Ссылка:- https://material.angular.io/components/select/api

Вы можете изменить свой код, как показано ниже, чтобы отображать цвет, когда пользователь выбирает значение.

<mat-select [(ngModel)] = "selectedValue" name = "food">
    <mat-select-trigger>
        <span [ngStyle] = "{ 'background-color': selectedValue }"/>
    </mat-select-trigger>
    <mat-option *ngFor = "let color of allColors" [value] = "'#' + color.value">
        <!-- {{color.label}}  -->
        <span class = "color-span" [ngStyle] = "{ 'background-color': '#' + color.value }"/>
    </mat-option>
</mat-select>

Демо

Другие вопросы по теме