что происходит с его атрибутом `value` в ngModel?

#angular #ngmodel

#angular #ngmodel

Вопрос:

Почему value атрибут не работает при добавлении ngModel . Теперь я понимаю input , что значение — это то, к которому привязана ngModel привязка, но что происходит с его value атрибутом? или, чтобы задать мой вопрос по-другому, почему input имеет значение 20 (то есть привязку к ngModel ), а не 10 (присваивается value атрибуту)

 <input type="text" id="details" 
     [ngModel]="'20'" 
    value="10">
 

Комментарии:

1. он работает, но он будет переопределен ngModel значением

Ответ №1:

Посмотрите здесь https://angular.io/api/forms/DefaultValueAccessor . это реализация метода доступа к значениям, который применяется ко всем <input type=text элементам. Как вы можете обнаружить, он включается, когда вы применяете, например, ngModel к элементу, как описано в разделе селекторы input:not([type=checkbox])[ngModel] . Затем, если мы посмотрим на источники этого средства доступа к значениям, вы можете обнаружить, что он переопределяет значение при writeValue запуске.

  /**
   * Sets the "value" property on the input element.
   * @nodoc
   */
  writeValue(value: any): void {
    const normalizedValue = value == null ? '' : value;
    this._renderer.setProperty(this._elementRef.nativeElement, 'value', normalizedValue);
  }