#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);
}