Динамический select Angular2

190
14 мая 2018, 03:30

Как в Angular2 сделать динамические select-ы?
Т.е есть три селекта: страна, город, улица. При вводе в первый select 'страна' нужно, чтобы отправлялся запрос на сервер и в селект 'город' подгружался список городов относящийся к этой стране. То-же с улицей. Спасибо!

Answer 1

Все крайне просто:

<select (change)="onChange($event.target.value)">
    <option *ngFor="let elem of elements">{{i}}</option>
</select>
onChange(elemValue) {
    console.log(elemValue);
    this.cityService.getCity(elemValue).subscribe(
        (data) => {
            const cityname = data.cityName;
            this.cityService.getStreets(cityname).subscribe(
                (streetData) => {
                    // где streetData твои улицы.
                } (error) => {
                   // error
                }
        } (error) => {
            // error
        }
    )
}

Где elemValue значение select а вместо cityService и getCity подставишь свое значение.

Answer 2

Собственно выглядеть должно примерно так:

<select class="form-control input-sm" [(ngModel)]="selectCountryId" (ngModelChange)="changeCountry($event)">
    <option [ngValue]="undefined" [textContent]="'Ничего не выбрано'"></option>
    <option *ngFor='let country of countries' [ngValue]="country.Id" [textContent]="country.Name"></option>
</select>
<select class="form-control input-sm" [(ngModel)]="selectCityId">
    <option [ngValue]="undefined" [textContent]="'Ничего не выбрано'"></option>
    <option *ngFor='let city of cities' [ngValue]="city.Id" [textContent]="city.Name"></option>
</select>

В контроллере:

changeCountry($event) {
    this.service.getCities(this.selectCountryId)
        .subscribe(result => {
            this.cities = result;
        })
}

Собственно логика следующая. С начала подгружаются данные по умолчанию. Список стран и список городов. Далее, как только происходит выбор страны, вызывается обработчик changeCountry. В нём отправляется запрос на бэк, где происходит фильтрация. Полученный список городов рендирится.

READ ALSO
Jasmine + TypeScript, не могу найти метод withArgs() класса Spy

Jasmine + TypeScript, не могу найти метод withArgs() класса Spy

Cогласно документации Jasmine у объекта Spy есть метод withArgs()

184
Реализация тега Select

Реализация тега Select

Подскажите как реализовать выпадающий список

168
Перевести Js в JQuery

Перевести Js в JQuery

Вот код который при перемещение ползунка добавляет картинку, мне надо перевести его на JQueryПомогите пожайлуста

155
Angular 5 routes

Angular 5 routes

Подскажите мне пожалуйста, как мне правильно организовать нечто подобное:

146