Angular, Typescript обращается к вложенной модели как массив - PullRequest
0 голосов
/ 12 июня 2019

пытается получить доступ к дочернему элементу (является массивом) родительского интерфейса. Но получая undefined.

export class Address {
    id: number;
    city: string;
    state: string;
}

import { Address } from './address';
export class User {
    id: number;
    name: string;
    alladdresses: Address[];
}

в моем компоненте - объявление

  users: User[] = [];
  address: Address[] = [];

и мой http.get равен

    selectUser(user: User) {
    let url = "http://localhost:8080/users/" + user.id
    this.http.get<User>(url).subscribe(

      res => {
        //console.log(res);
        this.selectedUser = res;
        console.log('selected user is:', this.selectedUser);

      },
      error => {
        console.log('error while getting user for ', user.id);
      },
      () => {
        console.log('complete');
      }
    );
  }

и ответ пользователя json: enter image description here

здесь выбранный пользователь, которого я отображаю на странице, и некоторые действия на странице, вызывающие другую функцию для доступа к адресам - массив

createAddress() {
    let newAddress: Address = {
      id: null,
      city: "new city",
      state: "new state"
    }
    console.log(this.selectedUser)
    let address: Address[] = this.selectedUser.alladdresses
    //address.push(newAddress);
    console.log(address);
  }

Но массив не определен, а не там, где происходит ошибка. enter image description here

1 Ответ

1 голос
/ 12 июня 2019

Похоже, что есть несоответствие между данными, которые возвращает ваш http.get метод, и тем, что вы ожидаете. Ваш API возвращает адреса, названные addresses, тогда как вы ожидаете alladdresses.

...