Angular ngModelChange Internet Explorer 11

Gro*_*nix 4 internet-explorer-11 angular-material angular

我使用 Angular 4.2.4 和 Angular Material 2.0.0.beta.12 并具有以下表单字段:

<mat-form-field>
    <input matInput placeholder="street" value="{{info.street}}" [(ngModel)]="info.street" (ngModelChange)="formChange()">
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

在 Firefox 和 Chrome 中,一切正常,如果我更改输入值,则会触发事件。但在 Internet Explorer 11 中,每次加载网站或如果我将焦点放在输入字段上,ngModelChange 就会触发。

有办法解决这个问题吗?(更改)正在发挥作用,但只有当我将注意力集中在不切实际的输入上时才会触发。

JSi*_*imo 5

我发现占位符属性是 Internet Explorer 中的不同之处。如果没有它,它ngModelChange就会按预期工作。

这种情况的解决方法是将占位符放在方括号中:

 [placeholder]="'placeholder value'"
Run Code Online (Sandbox Code Playgroud)

我假设占位符稍后会附加到输入元素(在 IE 处理它之后),这就是 IE 不触发ngModelChange事件的原因。

  • 不幸的是,这个建议并不能解决问题。有人有其他解决方案吗? (3认同)
  • 这是我的占位符。但添加“[占位符]”没有任何区别。一旦我从文本区域中删除占位符,事件就不会被触发 (2认同)