У меня есть функция с именем "getData", которая должна быть выполнена для отображения определенной информации. Я хочу, чтобы он запускался автоматически, но в данный момент он отображает данные только после нажатия кнопки, которая активирует функцию - см. (Component.html):
<button (click)="getData()">Fetch Data</button>
Я уже пытался вставить функцию в ngOnInit () в файле component.ts:
ngOnInit(){
this.getData()
}
и попытка загрузки в файле component.html:
<p onload="getData();">component works!</p>
... оба не привели к необходимому результату
Так выглядит код (в основном я получаю данные из вызова API и выбираю элемент с определенным идентификатором) component.ts
/*some code*/
export class DetailComponent implements OnInit {
public data: any = []
public selected: any = []
constructor(
public http: HttpClient,
public route: ActivatedRoute) { }
getData(){
const person_id = this.route.snapshot.paramMap.get('person_id');
const url ='http://localhost:4000/api/allpeople';
this.http.get(url).subscribe(data => this.data = data);
this.selected=this.data.find(item=>
{
if(item['person_id']===person_id)
{
return true;
}
return false;
});
console.log(person_id, this.selected);
return this.selected;
}
ngOnInit(){
this.getData()
}
component.html
<h1>{{selected.title}}</h1>
{{selected.person_id}}
При загрузке страницы консоль регистрирует следующую ошибку «Не удается прочитать свойство 'title' of undefined", и сообщение об ошибке ссылается на эту строку: <h1>{{selected.title}}</h1>
Но когда я нажимаю кнопку, она регистрируетсяданные, как это должно быть.
Как я могу позволить этому произойти автоматически?