Внести следующие изменения в компонент - Переменная zipValue
.Установите его начальное значение для одного из вас zip
значений массива [также неплохо иметь неопределенное значение) -
export class FormDeComponent {
zipValue;
zip = [
{ view: '1010 - Innere Stadt', value: 24 },
{ view: '1020 - Leopoldstadt', value: 25 },
]
ngOnItit() {
}
onSubmit(form: NgForm) {
console.log(form.value.zip);
console.log(this.zipValue);//you should see mat-select selected value; which would be an object.
}
}
В шаблоне сделайте следующее изменение -
РЕДАКТИРОВАТЬ 1- Используйте z.view в mat-option, как это [Это изменение для - когда вам было нужно "view"
в zip
<mat-option *ngFor="let z of zip" [value]="z.view" >{{z.view}}
</mat-option>
EDIT 2 - Используйте z вmat-option вроде этого [Это изменение для - когда вам нужны оба view and value
в zip;Это то же самое, что и мое самое первое решение]
<mat-option *ngFor="let z of zip" [value]="z" >{{z.view}}
</mat-option>
В "Edit 2" при нажатии кнопки console.log(form.value.zip);
вернет {view: '1010 - Innere Stadt', value: 24}
, который имеет и значение, и вид.Пока пользователь увидит "view"
в Mat-Select. Это стандартный способ реализации Mat-Select.
, см. Следующий стек: https://stackblitz.com/edit/angular-cvjpxq?file=app/select-overview-example.ts
Если вы все еще хотите, чтобы form.zip.value
вернул "1010 - Innere Stadt"
иВы хотите, чтобы "value"
, тогда "РЕДАКТИРОВАТЬ 1" - это решение, и тогда вам нужно будет найти этот объект в вашем zip-массиве следующим образом -
const foundZip = this.zip.find(z => z.view === form.value.zip)