切角值作为在Angular 8中使用的属性

问题描述 投票:-1回答:1

我有一个带有api调用的服务类,该服务类从下拉列表中获取一个值。但是,下拉列表中的值始终为null。因此,这是带有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);

javascript angular service dropdown material
1个回答
1
投票

在您的组件this.selectedValue中有值,但是您没有将其传递给服务,因此在服务中,属性selectedValue默认情况下初始化为null。

我的解决方案是将其作为参数传递给您的服务,例如

this.extendedSearchService.filerByRegistration(this.selectedValue);

您不需要服务中的selectedValue

© www.soinside.com 2019 - 2024. All rights reserved.