повторное использование angular 2 компонента

#angular

#angular

Вопрос:

Я вроде как новичок в angular 2, но ищу способ вернуться к компоненту и найти его таким, каким я его оставил.

Скажем, перейдите из списка пользователей к сведениям о пользователе, а затем вернитесь к списку пользователей

  1. без компонента, запрашивающего пользователей с сервера. это повторная отправка запросов get. но он будет заполнен пользователями так же, как и до того, как я перешел от него
  2. если бы я прокрутил, это было бы в той же точке, что и до того, как я ушел

Заранее спасибо, ребята

Комментарии:

1. Это запланировано на будущее, но в настоящее время не поддерживается.

Ответ №1:

Если вам нужно воссоздать компонент после того, как он был уничтожен, чтобы выглядеть точно так, как это было до того, как он был уничтожен, вам нужно сохранить состояние, которое необходимо для этого. В вашем случае это будет список пользователей и позиция, в которой он находится в данный момент.

Для сохранения состояния в приложении angular лучшим вариантом является использование реализации ngrx / store архитектуры Redux. Что вам нужно сделать, так это сохранить в ngrx / store все, что вам нужно для воссоздания компонента.

С помощью перехвата жизненного цикла ngOnInit вашего компонента вы можете извлечь эти данные из хранилища и придать своему компоненту прежний вид. Это могло бы выглядеть примерно так.

 ngOnInit(): void {
    this.list$ = this.store.select((state: ApplicationState) => state.list);
    this.position$ = this.store.select((state: ApplicationState) => state.position);
}
  

Ngrx /store возвращает наблюдаемые из хранилища, которые вы можете использовать в своем шаблоне следующим образом:

  <div *ngFor="let element of list$ | async">
  

Для получения дополнительной информации о сокращении reduxjs.org и github.com/ngrx/store

Комментарии:

1. Вы могли бы дополнительно использовать это https://github.com/btroncone/ngrx-store-localstorage/ для хранения всего в локальном хранилище

2. Это полезно только в том случае, если вы хотите, чтобы компонент повторно отображался таким же образом после перезапуска вашего приложения.

3. Точно. Или для сохранения последних полученных значений из серверной части или чего-то еще .. 🙂 Вы можете объявить, что states вы хотите сохранить локально.