2016-04-10 3 views
0

Я угловатый начинающий 2/TS.Как связать сильно типизированный массив в html

У меня есть этот schoolyears компонент:

export class SchoolyearsComponent implements OnInit { 

    schoolyears: Schoolyear[] = new Array(); 
    constructor(
     private _router: Router, 
     private _schoolyearsService: SchoolyearsService) { 
    } 

    ngOnInit() 
    { 
     this._schoolyearsService.getSchoolyears().subscribe(s => { 
      this.schoolyears.push(new Schoolyear(s)); 
     }); 
    } 
} 

Данные, которые я хочу показать в интерфейсе подходит как данные JSON. Мне нужно обернуть эти данные json в пользовательский класс Schoolyear.ts, а затем привязать его в пользовательском интерфейсе.

export class Schoolyear { 

    constructor(obj) 
    { 
     this.id = obj.id; 
     this.name = obj.name; 
     this.startDate = new Date(obj.startDate); 
     this.endDate = new Date(obj.endDate); 
    } 

    id: number; 
    name: string; 
    startDate: Date; 
    endDate: Date; 
} 

<div> 
    <div *ngFor="#s of schoolyears"> 
     <div style="font-weight:bold;"> 
      <h4>{{s.id}}</h4> 
      <h4>{{s.name}}</h4> 
      <p>{{ s.startDate}}</p> 
      <p>{{ s.endDate}}</p> 
     </div> 
    </div> 
</div> 

Ни один из этих 4 свойств не отображается в пользовательском интерфейсе.

Как правильно обернуть данные json и отобразить его в пользовательском интерфейсе?

У меня нет ошибок в выводе на консоль.

ответ

0

Я хотел бы попробовать что-то вроде этого:

this._schoolyearsService.getSchoolyears().map(years => { 
    return years.map(year => new Schoolyear(year)); 
}).subscribe(years => { 
    this.schoolyears = years; 
}); 

В вашем случае, вы предоставляете весь список в качестве параметра Schoolyear класса.

+0

О, действительно? Я думал, что функция .map работает как .select с Linq. Ahh ... его действительно поздний ха-ха, я даже не использую карту ... Я хотел ... – Pascal

+0

Я не знаю, почему вы используете TWO-карты, потому что он работает с одним карточным вызовом: this._schoolyearsService.getSchoolyears(). (годы => { this.schoolyears = years.map (y => new Schoolyear (y)); }); – Pascal

+0

В вашем случае это похоже. Это необходимо, если вы хотите переместить отображение в свою службу. В этом случае оператор отображения наблюдаемого необходим для адаптации потока данных. В противном случае вы правы, метод карты из массива достаточно ;-) –

Смежные вопросы