NGRX Store adapter.update - не изменять свойства для обнаружения изменений - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть следующий редуктор:

case ProductionCommentActionTypes.EditCommentSuccess: {
  return adapter.updateOne(action.payload, state);
}

, где полезной нагрузкой является следующий объект:

{ 
    id: number,
    changes: { 
       id: number;
       avatar: string;
       createdAt: Date;
       createdBy: string;
       body: string;
       discipline: string;
       isConcern: boolean;
       isResolved: boolean;
       plan_Id: number;
       resolution: {
                    id: number;
                    comment_Id: number;
                    avatar: string;
                    createdAt: Date;
                    createdBy: string;
                    body: string;   
                   }
      }
}

К сожалению, когда я иду обновить объект, я могу ясно видеть действие.payload содержит именно те данные, которые я ожидал.Я проверил как action.payload, так и эффект:

  @Effect()
  resolveProductionConcernSuccess$: Observable<Action> = this.actions$
  .ofType<ResolveConcernSuccess>(ProductionCommentActionTypes.ResolveConcernSuccess).pipe(
    // Performing a get rather than an edit as the comment should have already 
    // been updated in the service when the resolution was added.
    switchMap(action => this.commentService.getComment(action.payload.comment_Id)), 
          map((comment: any) => {
            comment.updatedBy = "test";
        return new EditCommentSuccess(comment);
      }),
    catchError(err => of(new EditCommentFail(err)))
  );

Однако, что я вижу из этого:

  this.comments$ = rootStore.select<Comment[]>(fromRoot.getCommentsForSelectedPlan);
this.comments$.subscribe(res => console.log(res));

Являются ли старые данные, даже если изменение вызвано.Я бы хотя бы ожидал увидеть updatedBy = "test".Я также вижу старые данные о состоянии сразу после updateOne, если я перехожу через отладчик.

Другой способ сказать, что это

      return adapter.updateOne(action.payload, state);

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

Почему свойства в состоянии фактически не обновляются?Есть ли правильный способ сделать это?

1 Ответ

0 голосов
/ 30 апреля 2019

Проблема была в редукторе.

return adapter.updateOne ({id: action.payload.id, изменения: action.payload}, состояние);

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