Как использовать select для отправки данных в серверную часть с использованием Angular 9, Node JS, Express и MySQL

#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 Я упрощу это для вас, а затем дам соответствующий ответ.