Подписка на ActionsSubject на отцовском компоненте не работает

У меня проблема с подпиской, которая, похоже, не работает, так как ее затеняют ее дети.

Архитектура примерно такая: у меня есть форма, отображающая список пользователей. Эта форма содержит скрытый компонент (UpdateUserComponent), подобный этому

  <app-update-user (navigation) = "navigate($event)" [user] = "user" *ngIf = "feature === 'update'"></app-update-user>

который будет отображаться в зависимости от действия пользователя. UpdateUserComponent содержит только логику для отправки действия UpdateUser и выглядит следующим образом:

<app-form-user [user] = "user" [roles] = "roles" [canHandleRoles] = "canHandleRoles" (fromForm) = "fromForm($event)"></app-form-user>

Таким образом, он будет отображать FormUserComponent, который является формой для обновления пользователя.

Я хотел подписаться на NGRX-Action, который отправляется из эффектов после того, как пользователь был успешно обновлен, и я вставил этот код:

constructor(
  private actions: ActionsSubject) {
}
this.subscription.add(this.actions.pipe(
  filter((action: Action) => action.type === UsersActionTypes.UserUpdated)
).subscribe(action => {
  //here do stuff needed when the user has been successfully updated
}));

Внутри UpdateUserComponent, отец FormUserComponent, но он не может перехватить какое-либо действие, в то время как тот же код внутри FormUserComponent может успешно перехватить действие. Похоже, что UpdateUserComponent находится в тени, потому что он отец FormUserComponent

<app-update-user (navigation) = "navigate($event)" [user] = "user" *ngIf = "feature === 'update'"></app-update-user>. Не могли бы вы удалить это условие *ngIf и проверить тот же код. Потому что я сомневаюсь, что ваш updateUserComponent уничтожается, пока он нормально работает в formusercomponent, потому что подписка в нем жива. Пожалуйста, подтвердите это.
walter 11.03.2019 16:19

что это.подписка ?

TintinSansYeux 11.03.2019 16:21

@MsuArven — это объект, который я использую для хранения подписок, а затем я откажусь от подписки на onDestroy.

Davide Quaglio 11.03.2019 16:23

onDestroy вообще не вызывается

Davide Quaglio 11.03.2019 16:23

@DavideQuaglio - если onDestroy updateUserComponent не вызывается, подписка должна работать и в этом компоненте. Тем не менее, пожалуйста, подтвердите один раз, удалив это условие.

walter 11.03.2019 16:28

@walter Я удалил метод OnDestroy и при активной подписке на бота, в обоих компонентах только FormUserComponent может перехватить действие, другой UpdateUserComponent вообще не может отловить какое-либо действие

Davide Quaglio 11.03.2019 17:20

удалите это условие *ngIf = "feature === 'update'" из <app-update-user></<app-update-user>, затем проверьте

walter 11.03.2019 17:23

@walter ничего, это мало что меняет, за исключением того, что некоторые вещи работают неправильно

Davide Quaglio 11.03.2019 17:48
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
8
287
0

Другие вопросы по теме