Angular Get запрос/валидация формы?

Здравствуйте!
Есть Get запрос
server.services.ts
getStations(){
    return this.http.get('http://62.141.52.96/site/act.php?action=getstations')
    .map(
      (response: Response) => {
        const data = response.json();
        return data;
      }
    );
  }


Вызываю в
app.components.ts
ngOnInit(){
    this.serverService.getStations()
        .subscribe(
          (data: any[]) => console.log(data),
          (error) => console.log(error)
     );
  }


получаю, соответственно в консоле
сonsole
(3) [{…}, {…}, {…}]
           0: 
                      city: "Kiev"
                      id_city: "694"
           1: 
                      city: "Moscow"
                      id_city: "825"
           2: 
                      city: "New York"
                      id_city: "429"

1.Как в Angular правильнее пробежаться по массиву и взять только значение city?
по привычке делаю так
for(var i=0;i<data.length;i++){
            console.log (data[i].city)
          };

2.Есть input в форме, в котором проверяю введенное значение
app.component.ts
Stations = ['Moscow',  'Kiev'];
ngOnInit() {
this.signupForm = new FormGroup({
         'inputFrom' : new FormControl(null, [Validators.required, this.rightStations.bind(this)]),
}

  rightStations (control: FormControl): {[s: string]: boolean}{
    if (this.Stations.indexOf(control.value) ==-1){
      return {'rightStationsIs': true};
    }
    return null;
  }



Хочу теперь переделать, что бы получать значение городов из Get-запроса и проверять их с введенными значениями и по нажатию Submit отправлять на сервер ID введенного города.
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Wondergrauf
1. Есть метод .map(), который выполняет перебор элементов массива:
ngOnInit(){
    this.serverService.getStations()
        .subscribe(
          (data: any[]) => {
            console.log(data.map((item) => item.city)
            this.stations = data.map((item) => item.city)
          }),
          (error) => console.log(error)
     );
  }


2. Валидатор будет выглядеть как-то так:
rightStations (control: FormControl): {[s: string]: any}{
  return this.Stations.indexOf(control.value) !== -1 ? {'rightStationsIs': true} : null
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы