Вы определили tags
, но не создали / или не присвоили ему:
Добавление свойства как:
tags = [];
или
tags = new Array<string>();
должно разрешить проблема.
Кроме того, вы можете немного упростить свой лог c:
this.tags = this.exTags.tags.map(x => x.label);
И пример того, что я вижу
export class AppComponent implements OnInit {
name = 'Angular ' + VERSION.major;
getTags() :Observable<Ex>{
return new Observable(ob => {
setTimeout(() => {
ob.next({
id :"a",
name: "a name",
tags: [
{
label:"a label",
count:1,
updateInfo: [
{
date: new Date().toString(),
delay:5
}
]
},
{
label:"b label",
count:1,
updateInfo: [
{
date: new Date().toString(),
delay:5
}
]
}
]
})
},1000)
})
}
exTags: Ex;
tags = new Array<string>();
ngOnInit(){
this.getTags().subscribe(s => { this.tags = s.tags.map(x => x.label)});
}
}
export class Tag{
label: string;
count: number;
updateInfo: [
{
date: string,
delay: number
}
]
}
export interface Ex {
id: string,
name: string,
tags: Tag[]
}
Edit
Поскольку у вас есть OBservable, вам нужно дождаться завершения запроса на получение. Я издевался над сетевым asyn c с таймаутом для объекта asyn c (обновлен Stackblitz)
Тогда все, что вам нужно, это вызвать метод подписки на AJAX / Observable:
this.getTags().subscribe(s => { this.tags = s.tags.map(x => x.label)});