Я не уверен, является ли это причиной обновления, но bookResults.subscribe
является асинхронной операцией, поэтому вы, по сути, возвращаете пустой массив, а затем в какой-то неопределенной точке измените его на полные данные.
У вас есть два варианта решения этой конкретной проблемы: go в RX js или обещаниях:
RX js параметр:
public requestBookByIsbn(isbn: string): GoogleBook[] {
return this.callApi(isbn);
}
И просто дайте Компонент, который вызывает requestBookByIsbn
, подписывается и устанавливает данные в компоненте в этой точке.
Опция Promise:
public async requestBookByIsbn(isbn: string): GoogleBook[] {
const bookResults: Promise<GoogleBook[]> = this.callAPI(isbn).toPromise();
return await bookResult;
}
Я предполагаю, что где происходит refre sh, скорее всего, за пределами той части, которую вы нам показываете.
Если вы перенаправляете на '/ login', чтобы проверить, вошел ли пользователь в систему, то в этом перенаправлении вы должны добавить текущий путь как history указать или параметр запроса, а затем перенаправить на этот путь после завершения входа в систему, а не перенаправить на '/'.