У меня есть переменная tipo
типа Number. Когда я делаю это:
<mat-select placeholder = "Tipo" formControlName = "tipo">
<mat-option [value] = "item.key" *ngFor = "let item of arrayOfValues | keyvalue">
{{ item.value }}
</mat-option>
</mat-select>
он не выбирает текущий tipo
для раскрывающегося списка (потому что это число, а не строка).
.key
кажется, работает/сопоставляется только для строки (если на самом деле я меняю typo
на строку, это работает).
Каков правильный способ сопоставления ключей как целого числа в этом случае?
Пробовал это:
this.form = this.fb.group({
tipo: [data.tipo.toString(), [Validators.required]]
});
который, кажется, работает, но мне не нравится это как обходной путь (в основном он обрабатывает число как строку, только для соответствия цели).
Проблема здесь не в типе tipo
formControl. Причиной является тип item.key
, который, вероятно, является строкой.
Возможно, если item.key
и tipo
являются числами, желаемое поведение будет работать нормально.
KeyValue
предоставит ключ строкового типа, поэтому добавьте +
, чтобы преобразовать его в число: <mat-option [value] = "+item.key" ...>
Документация по каналу KeyValue
Пример рабочего стекблиц
Я обновил ответ. Вы можете сохранить его номер, преобразовав item.key в число, просто добавив оператор «+»
более элегантное решение. спасибо
Это уж точно. Вот почему я размещаю .tostring, и это работает. Вопрос в том, как заставить его работать, сохраняя int? :)