Как я могу переписать свой машинописный код, чтобы он не вызывал http-запрос? - PullRequest
0 голосов
/ 19 сентября 2019

Привет, у меня угловой интерфейс.У меня есть formcontrol по имени range.range в основном является массивом для двух моментных объектов (что-то вроде этого [moment (), moment ()]. ​​когда пользователь нажимает кнопку очистки в пользовательском интерфейсе, диапазон очищается и устанавливается равным нулю. когда range равен нулю, я не хочувызвать вызов http (campaignsService.getUnpaginatedCampaignsWithinRange). Как я могу это сделать. Ниже приведен мой фрагмент кода. Другими словами, если this.rangeControl.value [0] или this.rangeControl.value [1] или "value" равночтобы обнулить, я не хочу инициировать вызов метода this.campaignsService.getUnpaginatedCampaignsWithinRange

 if(!this.isGlobalAdmin){
  this.rangeControl.valueChanges.pipe(
    switchMap( value =>  this.campaignsService.getUnpaginatedCampaignsWithinRange(
      { 
        accountIds : this.currentUserAccount? this.currentUserAccount.id: null,
        campaignStatuses: this.campaignStatusIds,
        rangeStartDate: (this.rangeControl.value[0]).toISOString(),
        rangeEndDate: (this.rangeControl.value[1]).toISOString()
      }
    )
  ),
  tap((campaigns) => { this.campaigns = campaigns; })
  ).subscribe();
}

очень ценю любую помощь

спасибо

1 Ответ

0 голосов
/ 19 сентября 2019

Просто, просто отфильтруйте изменение вашего значения.Добавьте фильтр и передайте условие согласно вашему требованию.

Фильтр RxJS используется для фильтрации значений, излучаемых источником Observable на основе заданного предиката.Если условие возвращает true, фильтр будет выдавать значение, полученное из источника Observable, в противном случае - нет.

filter (x => x! == null),

if(!this.isGlobalAdmin){
  this.rangeControl.valueChanges.pipe(
    filter(x => x !== null), // add filter and pass condition as per your requirement
    switchMap( value =>  this.campaignsService.getUnpaginatedCampaignsWithinRange(
      { 
        accountIds : this.currentUserAccount? this.currentUserAccount.id: null,
        campaignStatuses: this.campaignStatusIds,
        rangeStartDate: (this.rangeControl.value[0]).toISOString(),
        rangeEndDate: (this.rangeControl.value[1]).toISOString()
      }
    )
  ),
  tap((campaigns) => { this.campaigns = campaigns; })
  ).subscribe();
}

См. Это для фильтра RxjS: https://www.concretepage.com/angular/angular-rxjs-filter

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