在我的 Angular 应用程序中,我使用选择控件让用户在 *ngFor 循环中填充选项。对于第一次调用(或直到用户设置实际值),选择为空,一旦做出选择,他们可以更改值但不能将其设置回“空”。这就是它的设计和工作方式,直到 angular 8。
直到 ng 8 我的代码看起来像这样,只要 someValue 为空,选择控件中就没有预选条目:
<select [value]="someValue" (change)="onSelectionDataChanged($event.target.value)">
<option *ngFor="let option of options" [value]="option"> {{ option }} <option>
</select>
与 ivy<select [value]=...>
一起使用<option *ngFor=...>
(请参阅https://angular.io/guide/ivy-compatibility-examples#select-value-binding),但那里提出的解决方案总是选择第一个条目,即使 someData 为空. 这有两个缺点:1. 显示意味着选择了第一个条目,这是不正确的;2. 要实际选择第一个条目(并保存选择以供后端使用),用户现在必须先选择第二个条目然后选择第一个条目。
修改后的代码(如 angular guilde 中所建议)如下所示:
<select (change)="onSelectionDataChanged($event.target.value)">
<option *ngFor="let option of options" [value]="option" [selected]="option === someValue"> {{ option }} <option>
</select>
一种解决方法是将 emty 字符串添加到选项数组,但这使用户能够完全删除他们的选择。
有没有办法在常春藤中进行空预选的选择?