Подтвердить что ты не робот

Angular2 Маршрутизация - сохранение состояния компонента при изменении маршрута

У меня есть приложение с представлениями маршрутов, мне нужно иметь возможность продолжить с того момента, когда маршрут изменился, но после возврата компонент находится в исходном состоянии.

Есть ли способ сохранить состояние компонента?

4b9b3361

Ответ 1

обновление 2

Теперь исправлено (Angular 2.3) для нового маршрутизатора https://github.com/angular/angular/pull/13124, что позволяет обеспечить пользовательскую стратегию повторного использования.

В качестве примера см. также https://www.softwarearchitekt.at/post/2016/12/02/sticky-routes-in-angular-2-3-with-routereusestrategy.aspx

Angular docs https://angular.io/api/router/RouteReuseStrategy

update 2 Этот ответ предназначен только для давно прекращенной версии маршрутизатора.

См. https://angular.io/docs/ts/latest/guide/router.html#!#guards для того, как это сделать в текущем маршрутизаторе.

оригинальный

Если ваши компоненты реализуют CanReuse и возвращает true из

routerCanReuse(next: ComponentInstruction, prev: ComponentInstruction) {
  return true;
}

тогда компонент сохраняется и повторно используется вместо уничтожения и воссоздания.

Другой способ - сохранить данные в общей службе и получить их оттуда, когда компонент будет воссоздан.

Ответ 2

Существует открытый вопрос об этом точном сценарии в https://github.com/angular/angular/issues/5275

Вы можете использовать routerCanReuse только в том случае, если новый компонент и старый компонент (когда вы нажимаете кнопку "назад" ) имеют один и тот же тип компонента.

Поскольку Günter предложил ваш единственный вариант прямо сейчас, если Компоненты имеют разный тип, нужно сохранить состояние в общей службе.