Сохраните данные перед тем, как покинуть страницу или изменить параметр в угловом компоненте. - PullRequest
0 голосов
/ 04 марта 2019

с учетом следующих путей:

const appRoutes: Routes = [
  { path: '', component: ListComponent },
  { path: 'items/:id', component: ItemOutletComponent,
    children:[
      { path: '', component: Section1Component },
      { path: 'page2', component: Section2Component, },
    ]
  }];

как обеспечить, чтобы пользовательский метод вызывал applyChanges() для Section1Component, соответственно Section2Component каждый раз:

  1. пользователь перемещаетсядалеко от страницы
  2. параметр :id url изменяется
  3. в качестве дополнительного вопроса, также когда пользователь закрывает браузер?

Я сейчас загружаю модель ресурса вItemOutletComponent, я создаю FormGroup для каждого компонента раздела:

ngOnInit() {
  this.formGroup = new FormGroup({
     section1: new FormGroup({
       prop1: new FormControl(),
       prop2: new FormControl()
  });
  this.formGroup.pathValue(this.model);
}

applyChanges() {
  Object.assign(this.model, this.formGroup.value);
}

Все, что мне нужно, это убедиться, что изменения FormGroup применяются к модели в соответствующее время.На странице нет кнопки Сохранить.

1 Ответ

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

Вы можете использовать события навигации, чтобы обнаружить, что пользователь собирается перейти в другое место (или нет) и выполнить необходимые действия

https://angular.io/guide/router#router-events

Бонусный ответ: вам придется использоватьродные события JS, такие как windiw:unload и window:beforeunload

Как мы можем определить, когда пользователь закрывает браузер?

Но в некоторых случаях он не будет работать (например,убивает браузер), но это полностью зависит от браузера

...