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); };
沒有留言:
張貼留言
你好!歡迎你在我的 Blog 上留下你寶貴的意見。