Почему ($ event.target.value) не получает информацию в Angular8 и MySQL?

($ event.target.value)

<div class="select is-small is-fullwidth" [formGroup]="createAccountForm">
<select class="form-control" name="ConContryName" formControlName="country"  (change)="onChangeCountry($event.target.value)">
    <option value="">Select Country...</option>
    <option *ngFor="let country of countries" [value]="countryId">{{country.countryName}}</option>
</select>
</div>

<div class="select is-small is-fullwidth" [formGroup]="createAccountForm">
<select class="form-control" name="ConStateName" formControlName="state"  (change)="onChangeState($event.target.value)">
    <option value="">Select State...</option>
    <option *ngFor="let state of states" [value]="stateId">{{state.stateName}}</option>
</select>
</div>

urlDB = 'http://localhost:3000/';

getCountries() {
  return this.httpClient.get(`${this.urlDB}superadmin/getCountries`);
};

getStates(countryId: number) {
  return this.httpClient.get(`${this.urlDB}superadmin/getStates/${countryId}`);
}

onChangeCountry(countryId: number ) {
  if (countryId) {
    alert(countryId);               //the alert works, but the value of countryId is UNDEFINED
    this.countryStateCityService.getStates(countryId).subscribe(data => {
      this.states = data;
      this.municipalities = null;
    });
  } else {
    this.states = null;
    this.municipalities = null;
  }
}


urlDB = 'http://localhost:3000/';

  getCountries() {
return this.httpClient.get(`${this.urlDB}superadmin/getCountries`);
  };

  getStates(countryId: number) {
return this.httpClient.get(`${this.urlDB}superadmin/getStates/${countryId}`);
  }

  getMunicipalities(stateId: number) {
return this.httpClient.get(`${this.urlDB}superadmin/getMunicipalities/${stateId}`);
  }
<div class="control">
  <div class="select is-small is-fullwidth" [formGroup]="createAccountForm">
    <select class="form-control" name="ConContryName" formControlName="country"  (change)="onChangeCountry($event.target.value)">
      <option value="">Select Country...</option>
      <option *ngFor="let country of countries" [value]="countryId">{{country.countryName}}</option>
    </select>
  </div>
</div>

<div class="control">
  <div class="select is-small is-fullwidth" [formGroup]="createAccountForm">
    <select class="form-control" name="ConStateName" formControlName="state"  (change)="onChangeState($event.target.value)">
      <option value="">Select State...</option>
      <option *ngFor="let state of states" [value]="stateId">{{state.stateName}}</option>
    </select>
  </div>
</div>

Привет, я использую Angular - узел js - mysql ... я делаю выпадающий список стран, а затем еще один выбор штатов и т. д. с муниципалитетами; Эта информация находится в БД MySQL. код работает, когда я получаю список стран, но в onChangeCountry($event.target.value) моего HTML он дает мне значение UNDEFINED, я могу ввести alert из onChangeCountry(), но console.log(countryId) показывает НЕ УКАЗАНО.

0
задан 28.11.2019, 21:51
1 ответ

В этой линии:

<option *ngFor="let state of states" [value]="stateId">{{state.stateName}}</option>

[value]="stateId" неопределенный, из-за которого он не существует ни в какой стороне. Принимая, что структура states содержала Id это [value]="stateId" deberГ, - когда это был [value]="state.Id".

Я Заключаю, что это объект из-за этой линии: {{state.stateName}}.

1
ответ дан 01.12.2019, 10:40
  • 1
    у меня есть таблица countries с countryId, countryName и countryKey, у меня есть другая таблица states с stateId, stateName, stateKey и countryId, и другая из муниципалитетов. Я не верю в то, что имя Пойдите stateId, я пришел в волнение... или если? ко мне приходит сомнение..., но даже ему не удается определить countryId первого select... я представляю, что, если правильно то, что ты комментируешь мне, será sieugiente проблема...., но сейчас мой недостаток состоит в том, чтобы получать countryId. Tambié n có я говорю, что не coloqué чтобы не делать это таким длинным. – Octavio 28.11.2019, 21:57
  • 2
    Ты можешь печатать ее структура state?. Должен будь быть объектом. Чтобы мочь давать тебе explicació n лучше. Обнови вопрос с этими новыми данными. – Angel 28.11.2019, 22:07