Как определить тип массива в Angular 5 - PullRequest
0 голосов
/ 29 июня 2018

I got in console not in UI screen

Моя модель:

    export class Customer
 {
        CustomerId :number
        FirstName : string
        LastName : string
        Email : string
        Phone : string
        ConfirmPassword:string
        Password : string
        Address : string//**I want to define address as array.Because I got List of Address from Customer  as shown in the image.**

        }

Получил массив адресов от API клиента. Как этого добиться?

Ответы [ 4 ]

0 голосов
/ 29 июня 2018

Сначала вы должны создать Address класс машинописи следующим образом.

export class Address {
  addressId: string;
  customerId: string;
  firstName: string;
  lastName: string;
}

Затем определите атрибут массива адресов в Customer class.

export class Customer {
   customerId :number
   firstName : string
   lastName : string
   email : string
   phone : string
   confirmPassword:string
   password : string
   address : Address[];

}

Тогда итерируйте клиентов и их адреса.

<ul *ngFor="let customer of customers">
  <li>
    <div>
      <strong>
        {{customer?.firstName}}
        {{customer?.lastName }}
      </strong>
      <span>-</span>
      <div *ngFor="let adr of customer?.address">
        {{ adr?.addressId + ', ' + adr?.customerId + ', ' + adr?.firstName}}
      </div>
    </div>
  </li>
</ul>

Демо: https://stackblitz.com/edit/angular-1kmqqs

0 голосов
/ 29 июня 2018

Вы можете использовать Array<Address> или Address[], оба одинаковые.

Если у вас нет модели Address, просто используйте Array<{}>

export class Customer
{
    CustomerId :number
    FirstName : string
    LastName : string
    Email : string
    Phone : string
    ConfirmPassword:string
    Password : string
    Address : Array<Address>

}

РЕДАКТИРОВАТЬ:

Чтобы отобразить каждый элемент внутри объектов (содержащихся в массиве), вы можете просто перебрать массив объектов

<div *ngFor = "let addr of address">    
  {{addr.addressId}} |  {{addr.customerId}} |  {{addr.firstName}}
</div>

DEMO

0 голосов
/ 29 июня 2018

Вы должны определить что-то вроде: export interface Address {...}, а затем в своем классе Customer вы должны изменить тип свойства адреса со строки на Adress []

0 голосов
/ 29 июня 2018

должно быть

customers : Customer[] = [];

EDIT:

Вам нужно иметь класс для Address, как следует,

export class Customer
{
  AddressId : string;
  ... etc
}

и в вашем классе Cusomter,

export class Customer
{
    CustomerId :number
    FirstName : string
    LastName : string
    Email : string
    Phone : string
    ConfirmPassword:string
    Password : string
    Address : Address[]

}
...