инициализировать компонент при перенаправлении обратно к нему - PullRequest
0 голосов
/ 24 марта 2019

Прежде чем войти в код, у меня есть концептуальный вопрос: Я перенаправляю из компонента A (Основной список элементов) в компонент B (форма для создания нового элемента), а затем из компонента B обратно в компонент A. Я хотел бы обновить компонент A новым элементом. Одним из вариантов является подписка на тему в сервисе, который вводится в эти 2 компонента. Я хотел бы знать, есть ли другой вариант. Я знаю, что маршрутизация сохраняет состояние компонента, и событие ngOnInit не вызывается при маршрутизации обратно к компоненту A, поэтому я не могу использовать это событие для подписки на сервис. Есть ли другое событие жизненного цикла, которое я могу использовать при перенаправлении на компонент?

Ответы [ 2 ]

0 голосов
/ 24 марта 2019

Я бы использовал RouteGuard для предварительной загрузки данных для компонента с функцией canActivate. Он будет блокировать маршрут для продолжения до тех пор, пока не будут загружены необходимые данные, затем разрешит ему продолжить и отобразить представление.

В вашей конфигурации маршрутизации вы бы сделали что-то вроде

export const ROUTES: Routes = [
  //...
  {
    path: 'example',
    component: ExampleComponent,
    canActivate: [PreloadDataGuard] //<-- 
  }
  //...
];

Охрана будет обрабатывать загрузку данных и должна вернуть Observable<boolean> или Promise<boolean>, когда закончите.

Это даже проще, если вы используете шаблон хранилища для ваших данных, например, NGRX или NGXS или Redux. В этом случае взгляните на эту статью , хотя я думаю, что она может помочь вам в дальнейшем, даже если вы не пользуетесь магазином.

0 голосов
/ 24 марта 2019

Не сообщайте, когда вы вернетесь к Компоненту A, будет запущено ngOnInit, и вы можете получить данные из вашего API для обновления пользовательского интерфейса

...