执行库存搜索时,用户可以选择一些选项来完善其搜索。并非所有选项都是必需的,但是如果未选择所有选项,则ng-select会将选择解释为“ NULL”,服务器不会在GET请求中处理该选择,因为它期望使用空字符串。可以通过不使用占位符文本而是使用空字符串来解决此问题,但这显然会损害用户体验。当仍然没有占位符文本时,什么也没有选择,我需要一种为ng-select传递空字符串的方法。
<ng-select placeholder="{{'Select year' | translate}}" [(ngModel)]="selectedHeavyDutyYear" [items]="searchHeavyDutyYears" [clearable]="false" (change)="populateHeavyDutyMakes()" [disabled]="isLoading" dropdownPosition="bottom"></ng-select>
<ng-select placeholder="{{'Select make' | translate}}" [(ngModel)]="selectedHeavyDutyMake" [items]="searchHeavyDutyMakes" [clearable]="false" (change)="populateHeavyDutyModels()" [disabled]="isLoading || !selectedHeavyDutyYear" dropdownPosition="bottom"></ng-select>
<ng-select placeholder="{{'Select model' | translate}}" [(ngModel)]="selectedHeavyDutyModel" [items]="searchHeavyDutyModels" [clearable]="false" (change)="searchHeavyDutyYmmIfDesktop()" [disabled]="isLoading || !selectedHeavyDutyMake" dropdownPosition="bottom"></ng-select>
我已经将其视为常见问题,偶然发现http://jsfiddle.net/CB5um/是一种解决方案,但我在如何将其编写为可添加到Angular 7中的任意选择的指令方面苦苦挣扎。
答案 0 :(得分:1)
检入TS,并在调用API之前用空字符串替换NULL。
if (!this.selectedHeavyDutyYear) {
this.selectedHeavyDutyYear = "";
}