我有一个带有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);
在您的组件this.selectedValue
中有值,但是您没有将其传递给服务,因此在服务中,属性selectedValue
默认情况下初始化为null。
我的解决方案是将其作为参数传递给您的服务,例如
this.extendedSearchService.filerByRegistration(this.selectedValue);
您不需要服务中的selectedValue
。