Компонент Angular2 отображает некоторый объект. В дополнение к базовой информации об объекте необходимо загрузить дополнительные данные через службу, которая возвращает Observable и работает довольно медленно.
Базовая часть информации об объекте должна отображаться немедленно, а дополнительные данные – как только они становятся доступными.
Что-то вроде этого:
SomeObjectComponent {
someObject: SomeObject;
extraData: ExtraData;
@Input()
set item(v: SomeObject) {
this.someObject = v;
backendService.getExtraData(v.id)
.subscribe(d => this.extraData = d);
}
}
// in the template
<some-object [item]="currentlySelected"></some-object>
Когда загрузка медленная и пользователь перемещается между различными значениями SomeObject
, асинхронная загрузка может загрузить и назначить неправильное extraData
для текущего элемента.
Что было бы лучшим способом решить эту проблему? Что делать, если каждый раз необходимо загружать несколько дополнительных элементов данных (и каждый из них появляется сразу после загрузки)?
item
. Я предполагаю, что вы хотите отменить запрос, когда данные еще не поступили, когда вы переходите к другому элементу. Что, если вернуться назад? Я предполагаю, что вы хотите получить элемент из кеша (из предыдущего запроса). Я бы создал службу, которая обеспечивает немедленную доступность ранее загруженных элементов. Например, как показано в stackoverflow.com/questions/36271899/ - person Günter Zöchbauer   schedule 24.11.2016