значение в качестве свойства на службе в Angular 8 - PullRequest
0 голосов
/ 20 октября 2019

У меня есть класс обслуживания с вызовом API, который принимает значение из выпадающего списка. Но значение из выпадающего списка всегда равно нулю. Так что это сервис с вызовом API:

ExtendedSearchService


 selectedValue: string;

filerByRegistration() {
    console.log('registration filter2 ');
    this.participantService
      .filterParticipantsByRegistration(1, this.selectedValue as any, moment(this.startDate).format('YYYY MM D'))
      .subscribe(filterByRegistration => {
        console.log('selected value:', this.selectedValue);
        this.filterparticipantByRegistration.emit(filterByRegistration);
      });
  }

И это компонент:

Конструктор:

constructor(
    private qrCodeDefinitonService: QRCodeDefinitionService,
    private echeqDefinitionService: EcheqDefinitionService,
    private extendedSearchService: ExtendedSearchService
  ) {}

и

звонок из службы:

 if (this.selectedSearch === 'Registratie') {
      console.log('registration99')

      this.extendedSearchService.filerByRegistration();
    }

и шаблон:


 <div class="search-select searchstatus" *ngIf="selectedSearch && hasStatusOptions(selectedSearch)">
        <mat-select
          placeholder="Status"
          name="status"
          [(ngModel)]="selectedValue"
          (ngModelChange)="onChange($event)"
        >
          <mat-option value="">--Selecteer een status--</mat-option>
          <mat-option *ngFor="let option of getStatusOptions(selectedSearch)" [value]="option.apiStatus">
            {{ option.status }}
          </mat-option>
        </mat-select>
      </div>

А это ошибка:

ERROR Error: Required parameter filter was null or undefined when calling filterParticipantsByRegistration.

Спасибовы

это просто вызов API:

public filterParticipantsByRegistration(organisationId: number, filter: 'Invited' | 'Registered', start: string, observe?: 'body', reportProgress?: boolean): Observable<Array<ParticipantInfoDTO>>;

Очень странно, потому что я получаю правильное значение обратно, если я сделаю это:


 searchFor() {
    if (this.selectedSearch === 'Registratie') {
      console.log('registration99', this.selectedValue);      

      this.extendedSearchService.filerByRegistration();
    }

registration99 Invited

Но мне нужно свойство selectedValue, например:

 filerByRegistration(selectedValue: any) {
    console.log('registration filter2 ');
    this.participantService
      .filterParticipantsByRegistration(1, selectedValue as any, moment(this.startDate).format('YYYY MM D'))
      .subscribe(filterByRegistration => {
        console.log('selected value:', selectedValue);
        this.filterparticipantByRegistration.emit(filterByRegistration);
      });
  }

И я изменил это:

   this.extendedSearchService.filerByRegistration(this.selectedValue);

1 Ответ

1 голос
/ 21 октября 2019

В вашем компоненте this.selectedValue есть значение, но вы не передали его службе, поэтому в службе свойство selectedValue по умолчанию было инициализировано как нулевое.

Мое решение состоит в том, чтобы передать его вашему сервису в качестве аргумента, например

this.extendedSearchService.filerByRegistration(this.selectedValue);

Вам не нужно selectedValue в вашем сервисе.

...