У меня проблема с подпиской, которая, похоже, не работает, так как ее затеняют ее дети.
Архитектура примерно такая: у меня есть форма, отображающая список пользователей. Эта форма содержит скрытый компонент (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
что это.подписка ?
@MsuArven — это объект, который я использую для хранения подписок, а затем я откажусь от подписки на onDestroy.
onDestroy вообще не вызывается
@DavideQuaglio - если onDestroy updateUserComponent не вызывается, подписка должна работать и в этом компоненте. Тем не менее, пожалуйста, подтвердите один раз, удалив это условие.
@walter Я удалил метод OnDestroy и при активной подписке на бота, в обоих компонентах только FormUserComponent может перехватить действие, другой UpdateUserComponent вообще не может отловить какое-либо действие
удалите это условие *ngIf = "feature === 'update'" из <app-update-user></<app-update-user>, затем проверьте
@walter ничего, это мало что меняет, за исключением того, что некоторые вещи работают неправильно





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