Angular 4 For цикл из вызова API - PullRequest
0 голосов
/ 25 апреля 2018

Мне нужна помощь с чем-то.Я сделал вызов HTTP API, и это работает.Я получаю список продуктов из вызова API, но теперь мне нужно пройтись по ним, чтобы я мог выбрать их «название».

Вот так выглядит мой Product.Service.TS:

import { Injectable } from "@angular/core";
import { Http } from "@angular/http";
import { KioskService } from "./kiosk.service";
import { Object } from "../object";

@Injectable()
export class ProductService {
  private config: Object = {};
  public domainSettings: Object = {};

  constructor(private http: Http, private kioskservice: KioskService) {}

  public getAllProducts() {
    return new Promise((resolve, reject) => {
      this.http
        .get(
          `${this.kioskservice.getAPIUrl()}products/?apikey=${this.kioskservice.getAPIKey()}`
        )
        .toPromise()
        .then(
          res => {
            this.config = res.json();
            console.log(res.json());
            resolve();
          },
          msg => {
            throw new Error("Couldn't get all Bookings: " + msg);
          }
        );
    });
  }
}

Показывает все продукты, поэтому 40 объектов: enter image description here

Как я могу пройти по всем объектам, чтобы выбрать «Имя»как в этом примере:

public LocationGUID() {
    return this.config["LocationGuid"];
}

В приведенном выше примере возвращается «LocationGuid» из объекта.Это легко, потому что возвращается только 1 объект, но теперь он мне нужен для 40 объектов!Кто-то, пожалуйста, помогите: D

1 Ответ

0 голосов
/ 25 апреля 2018

Просто переберите до разрешения. Но я не уверен, что это самое чистое решение для того, чего вы действительно хотите достичь.

import { Injectable } from "@angular/core";
import { Http } from "@angular/http";
import { KioskService } from "./kiosk.service";
import { Object } from "../object";

@Injectable()
export class ProductService {
    private config: Object = {};
    // CHANGE (names are added in this array)
    private names: Object = [];
    public domainSettings: Object = {};

    constructor(private http: Http, private kioskservice: KioskService) {}

    public getAllProducts() {
        return new Promise((resolve, reject) => {
        this.http
            .get(
            `${this.kioskservice.getAPIUrl()}products/?apikey=${this.kioskservice.getAPIKey()}`
            )
            .toPromise()
            .then(
            res => {
                this.config = res.json();
                console.log(res.json());
                // CHANGE (add names)
                if (this.config && this.config.length) {
                    this.names = [];
                    for (let i = 0; i < this.config.length; i++) {
                        this.names.push(this.config[i]['Name']);
                    }
                }
                resolve();
            },
            msg => {
                throw new Error("Couldn't get all Bookings: " + msg);
            }
            );
        });
    }

    // CHANGE (function to fetch the names)
    public getNames() {
        return this.names;
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...