У меня есть компонент:данные не попадают в угловых шаблон
@Component({
selector: 'fx-content',
templateUrl: 'app/modules/localization/html/localizationList.html',
providers: [
LocalizationService,
HttpClient
]
})
export class LocalizationComponent implements OnInit {
private localizationService :LocalizationService;
public data :Array<string>;
constructor(localizationService :LocalizationService) {
this.localizationService = localizationService;
}
ngOnInit() {
this.getLocalization();
}
getLocalization(){
this.localizationService.getLocalization().localizationList.subscribe((data) => {
this.data = data;
console.log("DATA:",this.data)
});
}
}
сервис:
export class LocalizationService {
private httpClient :HttpClient;
public localizationList;
constructor(httpClient :HttpClient) {
this.httpClient = httpClient;
}
public getLocalization(){
this.localizationList = this.httpClient.get('localization').map(res => res.json());
return this;
}
}
И templale:
<table class="lst">
<thead>
<tr>
<th>Label</th>
<th>Path</th>
</tr>
</thead>
<tbody>
<tr *ngFor="#item of data.locales">
<td>
<a>{{item.name}}</a>
</td>
<td>
{{item.path}}
</td>
</tr>
</tbody>
</table>
Когда я иду на эту страницу, я получаю ошибка: EXCEPTION: TypeError: Cannot read property 'locales' of undefined
. В то же время консоль отображает обычный объект с данными. Я думаю, что эта ошибка связана с тем, что он пытается отобразить шаблон до того, как он получит данные из службы. Это так? Как заставить его работать правильно?
Спасибо, это работает). Какую роль выполняет оператор Элвиса? Он указывает, что объект 'data' может быть пустым? – sanu0074
Оператор Elvis предотвращает отбрасывание неопределенной ошибки, если элемент имеет значение null ... Когда элемент больше не равен нулю, данные будут использоваться. –