angular - SELECT 在 Angular2/4 和 SAFARI 中无法正常工作

标签 angular safari

我在使用基本 html SELECT 组件的 SAFARI 上遇到了大问题。

这是代码:

顶部声明

idFamily:any = null;
listProductFamily: ProductFamily[];

listProductFamily加载
    this.productFamilyService.GetAll().subscribe(
      data => {
        this.listProductFamily = data;
      },
      error => {
        this.errorMessage = <any>error;
      }
    );  

html组件
<select class="form-control" [(ngModel)]="idFamily" [ngModelOptions]="{standalone: true}">
    <option *ngFor="let f of listProductFamily" [value]="f.idFamily">{{f.code}} - {{f.family}}</option>
</select>

问题是这样的:

Safari 当 select 被加载时,它被设置在选项列表的第一个值上。

Chrome 、IE、FF 选择设置为 NULL 值(空)

在 Safari 上,即使选择设置在一个值上,实际上绑定(bind)它的 idFamily 变量也没有值......只有当用户选择一个值时,idFamily 才会获得一个值......就是这样。

我不知道如何解决这个问题...

希望它清楚
感谢支持

最佳答案

我遇到了同样的问题,Safari 会选择 <select> 中的第一项。当 ngModel 属性不匹配时,因为它处于“空”状态并且数组中没有匹配项。我的解决方法是添加一个匹配的空 <option> .在您的情况下,我认为这将起作用:

<select class="form-control" [(ngModel)]="idFamily">
    <option [value]="null"></option>
    <option *ngFor="let f of listProductFamily" [value]="f.idFamily">{{f.code}} - {{f.family}}</option>
</select>

在我们的例子中,我们使用 uuids 作为模型 id,所以我们使用空字符串作为初始值。零件:
export class SomeComponent {
   id = '';
}

模板:
<select [(ngModel)]="id">
   <option value=""></option>
   <option *ngFor="let item of items" [value]="item.id">{{ item.name }}</option>
</select>

在任何一种情况下,Safari 都应该在初始加载时选择空选项。

关于angular - SELECT 在 Angular2/4 和 SAFARI 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51652547/

相关文章:

Angular:结合应用程序但作为单独的项目开发

angularjs - Angular 2 - JWT 认证

javascript - 从 webapp 启动本地 exe

javascript - 由于早期重新绘制,Safari 9.0.3 在 window.scrollTo() 上出现闪烁问题

css - 谷歌字体无法在 Safari 上运行

javascript - Safari - HTML5 音频不会在下一个流中自动播放

angular - 将 Angular2 HTML 和 TypeScript 构建到单个文件

javascript - 如何访问 Angular 模板中的 map 对象

CSS 如何在没有省略号的情况下截断文本(在 Safari 中)

javascript - 键盘选择在 safari 中不起作用