Используя Angular с машинописным шрифтом, у меня есть следующий класс компонентов:
@Injectable()
@Component({
selector: 'app-mycomponent',
templateUrl: './mycomponent.component.html'
})
export class MyComponent implements OnInit{
public myList : any[] = [];
constructor(private http: HttpClient) { }
ngOnInit(): void {
this.http.get("url").subscribe(result => {
this.myList= result;
}, error => console.log(error));
}
getSubitem(id){
return this.http.get("url/"+id).subscribe(result => {
return result;
}, error => console.error(error));
}
}
И после фрагмента html:
<table>
<thead>
<tr>
<th>ID</th>
<th></th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of myList">
<td>{{item.id}}</td>
<td>{{(getSubitem(item.id) | async)}}</td>
</tr>
</tbody>
Теперь запустим приложение и перейдем к в этом представлении myList
загружается и отображается правильно. Но getSubitem
запускается неограниченное количество раз, поэтому происходит сбой браузера.
Как я могу убедиться, что getSubitem
вызывается только один раз для каждого MyList-элемента и отображается правильная информация?