При медленной загрузке большого списка элементов в Компоненте с в его шаблоне пользователь может перейти к странице «Сведения» об элементе, нажав, а после перехода назад получить такую ошибку:
JS: ERROR Error: java.lang.IndexOutOfBoundsException: Invalid index 5, size is 2
JS: java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
JS: java.util.ArrayList.add(ArrayList.java:147)
JS: com.telerik.widget.list.ListViewAdapter.add(ListViewAdapter.java:65)
Я думаю, это означает, что Компонент «заморожен» в кеше, но данные все еще поступают из объекта Observable из сервиса.И после того, как Компонент начал создавать новые элементы в списке, он падает, потому что уже пропустил несколько.
Как правильно связать поток данных с компонентом RadListView с возможностью его загрузки, когда компонент не активен?Я хотел бы, чтобы пользователь мог перейти на страницу сведений и обратно во время процесса загрузки данных ...
Это часть шаблона:
<RadListView id="listView" [items]="listings" height="100%" class="page page-content">
<ListViewGridLayout tkListViewLayout spanCount="{{ spanCount }}">
<ng-template let-item="item" let-i="index">
<StackLayout class="card-view" id="{{ i }}" listing_id="{{ item.listing_id }}" orientation="vertical" (tap)="onTap($event)">
<Image class="card-image" src="{{ item.url_170x135 }}" height="135" width="170" stretch="aspectFill"></Image>
<StackLayout orientation="vertical" horizontalAlignment="center">
<Label className="nameLabel" [text]="getTitle(item.title)"></Label>
</StackLayout>
</StackLayout>
</ng-template>
</ListViewGridLayout>
</RadListView>
Это код компонента:
listings = new ObservableArray<any>();
constructor(private productService: ProductService, private page: Page, private routerExtensions: RouterExtensions) {}
ngOnInit(): void {
this.productService.getListingsAdopted().subscribe((item) => this.listings.push(item));