2023-03-08 14:21

[Angular] 將 select, radio 改成一般等於 (==)

Angular 預設的 select, radio 比對是用全等於(===),這對用 string 的選項來說沒甚麼問題,但如果是數字選項就會出現型態不一致的問題,就必須型態轉換,這有點煩人,所以想要改成一般等於(==),在 Angular 的原始碼找到可以複寫判斷句的地方。

app.module.ts

  1. import { RadioControlValueAccessor, SelectControlValueAccessor } from '@angular/forms'; 
  2.  
  3. /* 將 SelectControlValueAccessor 的全等於改成一般等於 */ 
  4. SelectControlValueAccessor.prototype.compareWith = function (a, b) { 
  5.    return a == b; 
  6. }; 
  7.  
  8. /* 將 RadioControlValueAccessor 的全等於改成一般等於 */ 
  9. RadioControlValueAccessor.prototype.writeValue = function (value: any) { 
  10.    let self: any = this; 
  11.    self._state = value == this.value; 
  12.    self._renderer.setProperty(self._elementRef.nativeElement, 'checked', self._state); 
  13. }; 

0 回應: