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 回應:
張貼留言