Трубный оператор rxjs и Angular 6 - PullRequest
0 голосов
/ 29 мая 2018

У меня такой эффект:

@Effect()
  updateMappingAfterChangeFieldType$ = this.actions$.pipe(
    ofType(EditableObjectSchemaActionTypes.EditFieldType),
    withLatestFrom(
      this.store.select(fromReducers.getMappingFields),
      this.store.select(fromCore.getTimezones) // **
    ),
    map(([action, mappingFields, timezones]: [EditFieldType, MappingModel[], Timezone[]]) => 
    {
      const { uuid } = action.payload;
      const { fieldType } = action.payload;
      const fieldForUpdate = mappingFields.find(field => field.uuid === uuid);
      const defaultTimezone = timezones.find((timezone) => timezone.isDefault);// **
      const timezoneId = fieldType === DATE_TYPE ? defaultTimezone.id : '';// **
      return new UpdateExistingMapping({
        ...fieldForUpdate,
        timezoneId
      });
    })
  );

Линии, отмеченные //**, используются во многих местах.Я хочу сделать это пайплым оператором.Так это будет выглядеть примерно так:

@Effect()
  updateMappingAfterChangeFieldType$ = this.actions$.pipe(
    ofType(EditableObjectSchemaActionTypes.EditFieldType),
    withLatestFrom(
      this.store.select(fromReducers.getMappingFields)
    ),
    getDefaultTimezoneId,
    map(([action, mappingFields, defaultTimezoneId]: [EditFieldType, MappingModel[], string]) => 
    {
      const { uuid } = action.payload;
      const { fieldType } = action.payload;
      const fieldForUpdate = mappingFields.find(field => field.uuid === uuid);
      return new UpdateExistingMapping({
        ...fieldForUpdate,
        timezoneId: defaultTimezoneId
      });
    })
  );

Как я могу это сделать?Кстати эффект в классе.Как я могу импортировать pipe?Потому что когда я пытался import {pipe} from 'rxjs/Rx' я получаю сообщение об ошибке в черном списке

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