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));
});
}
}
私はUIに表示したいデータがJSONデータとして来ています。私は、カスタムJSchool.earクラスのjsonデータをラップし、それをUIでバインドする必要があります。
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つのプロパティはいずれもUIに表示されません。
jsonデータを正しくラップしてUIに表示するにはどうすればよいですか?
コンソール出力にエラーは発生しません。
ああ本当ですか??私は、.map関数がLinqと.selectのように機能すると思った。ああ...本当に遅いのは私も地図を使用していません...私は欲しかった... – Pascal
1つのマップコールで動作するため、2つのマップ呼び出しを使用する理由はわかりません:this._schoolyearsService.getSchoolyears()。subscribe (年=> { this.schoolyears = years.map(y =>新しい学年(y)); }); – Pascal
あなたの場合は似ています。マッピングをサービスに移す場合は、これが必要です。この場合、データフローを適合させるためには、観測可能なマップ演算子が必要です。それ以外の場合は、配列のマップメソッドで十分です;-) –