#angular
#angular
Вопрос:
У меня есть форма, в которой пользователь может обновлять информацию о пользователе. Я хотел бы изменить формат html таким образом, чтобы вместо того, чтобы пользователь мог вводить строку, он должен выбирать из выпадающего меню выбор опций. У меня есть общая идея для этого, но я застрял на привязке данных. В исходной форме, где пользователь вводил бы в состояние, из которого они происходят, у меня есть следующий код.
<mat-form-field>
<input matInput type="text" id="user_state" name="user_state"
placeholder="SC" [(ngModel)]="user.user_state" required>
</mat-form-field>
Я понимаю, что я использую привязку данных с директивой ngModel, как мне преобразовать это в формат select options, а затем отправить данные, выбранные пользователем, в серверную часть?
Комментарии:
1. Что будет в выпадающем списке? Если вы говорите о выборе параметров в выпадающем меню, сначала вам нужно иметь массив для отображения там данных. Затем вы обрабатываете ввод или выбранное значение, и это значение отправляется на серверную часть. Я добавлю выпадающий список с некоторыми данными для вас.
Ответ №1:
Официальную документацию Angular для выпадающих списков вы можете найти здесь . Как я уже сказал, вам нужен массив для отображения данных.
Например, так.
export class AppComponent {
constructor() {}
countries: any = [
{
full: "Great Britain",
short: "GB"
},
{
full: "United States",
short: "US"
},
{
full: "Canada",
short: "CA"
}
];
selectedCountry: string = "GB";
selectedCountryControl = new FormControl(this.selectedCountry);
}
Это HTML.
Примеры Angular Material — mat-select
<div style="padding: 20px;">
<h1>Model Forms</h1>
<div style="padding: 0 0 20px 20px">
<h3>Value string</h3>
<mat-form-field>
<mat-select
name="countryString"
[(value)]="selectedCountry"
placeholder="Country"
>
<mat-option [value]="'GB'">Great Britain</mat-option>
<mat-option [value]="'US'">United States</mat-option>
<mat-option [value]="'CA'">Canada</mat-option>
</mat-select>
</mat-form-field>
amp;nbsp;amp;nbsp; Selected = {{selectedCountry}}
</div>
</div>
Для получения дополнительной информации у вас есть это stackblitz
здесь.
https://stackblitz.com/edit/angular-material-select-demo-nhweaq
Комментарии:
1. @ThomasKremer Нет проблем, дайте мне знать, если это работает для вас. Если вы не можете пойти дальше, вы можете написать мне, и я вам отвечу.
2. Создайте stackblitz и разместите там свой код. stackblitz.com/edit/angular-ivy-k7ym8z в этот stackblitz вставьте свой код.
3. @ThomasKremer Я не вижу ваших изменений в stackblitz, можете ли вы поделиться ссылкой, я посмотрю там.
4. @ThomasKremer Нет, я ничего не вижу, пожалуйста, сохраните ваши данные, а затем дайте мне ссылку.
5. @ThomasKremer Я упрощу это для вас, а затем дам соответствующий ответ.