2016-12-10 6 views
0

Я работаю над учебником Angular2 Tour of Heroes, и я пытаюсь научиться работать с сервисами. Я смог получить базовый учебник, но когда я попытаюсь немного усложниться, мое приложение разбивается, и я не уверен, что я делаю неправильно.Angular2 Tour of Heroes - Hero.ts Свойство и вложенные объекты

Основная модель, которая прекрасно работает, состоит из объекта mock-heroes вместе с файлом hero.ts, который указывает тип каждой строки.

Вот тур героев Учебник Я имею в виду: https://angular.io/docs/ts/latest/tutorial/toh-pt4.html

hero.ts файл:

export class Hero { 
    id: number; 
    firstName: string; 
    lastName: string; 
    street: string; 
    suite: string; 
    city: string; 
    state: string; 
    zipcode: string; 
} 

макет hero.ts файла:

import { Hero } from './hero'; 

export const HEROES: Hero[] = 
[ 
    { 
     "id": 101, 
     "firstName": "John", 
     "lastName": "Doe", 
     "street": "111 Main Street", 
     "suite": "Apt. 111", 
     "city": "Anytown", 
     "state": "US", 
     "zipcode": "55555-0000" 
    } 
] 

Если я хочу для добавления вложенного объекта, такого как учетные записи, я получаю ошибку:

Object literal may only specify known properties, and 'accounts' does not exist in type 'Hero'.

hero.ts файл:

export class Hero { 
    id: number; 
    firstName: string; 
    lastName: string; 
    street: string; 
    suite: string; 
    city: string; 
    state: string; 
    zipcode: string; 
    accounts: ????; 
    accountNum: string; 
    accountName: string; 
    type: string; 
    availBalance: number 
} 

макет hero.ts файл:

import { Hero } from './hero'; 

export const HEROES: Hero[] = 
[ 
    { 
     "id": 101, 
     "firstName": "John", 
     "lastName": "Doe", 
     "street": "111 Main Street", 
     "suite": "Apt. 111", 
     "city": "Anytown", 
     "state": "US", 
     "zipcode": "55555-0000", 
     "accounts": [ 
      { 
       accountNum: "", 
       accountName: "Personal Checking", 
       type: "checking", 
       availBalance: 1000.00 
      } 
     ] 
    } 
] 

Итак, я понимаю, что мне нужно, чтобы определить "счета", но я пропускаю то, что я классифицировать " учетные записи ", так что я могу правильно вложить объекты.

Заранее спасибо.

+0

'accounts: Account []' или 'accounts: Object []' должен делать трюк, не так ли? – soywod

+0

Я пробовал оба в разных манерах, но это, похоже, не работало для меня. –

ответ

1
export interface Account { 
    accountNum: string; 
    accountName: string; 
    type: string; 
    availBalance: number; 
} 

export class Hero { 
    id: number; 
    firstName: string; 
    lastName: string; 
    street: string; 
    suite: string; 
    city: string; 
    state: string; 
    zipcode: string; 
    accounts: Array<Account>; 
} 
+0

Удивительный, вот и все. Спасибо JB! –