Angular 預設的 select, radio 比對是用全等於(===),這對用 string 的選項來說沒甚麼問題,但如果是數字選項就會出現型態不一致的問題,就必須型態轉換,這有點煩人,所以想要改成一般等於(==),在 Angular 的原始碼找到可以複寫判斷句的地方。
app.module.ts
import { RadioControlValueAccessor, SelectControlValueAccessor } from '@angular/forms';
/* 將 SelectControlValueAccessor 的全等於改成一般等於 */
SelectControlValueAccessor.prototype.compareWith = function (a, b) {
return a == b;
};
/* 將 RadioControlValueAccessor 的全等於改成一般等於 */
RadioControlValueAccessor.prototype.writeValue = function (value: any) {
let self: any = this;
self._state = value == this.value;
self._renderer.setProperty(self._elementRef.nativeElement, 'checked', self._state);
};
0 回應:
張貼留言