function updateElementValue(element, attr, value) {
    // Support: IE9 only
    // In IE9 values are converted to string (e.g. `input.value = null` results in `input.value === 'null'`).
    var propValue = isDefined(value) ? value : (msie === 9) ? '' : null;
    element.prop('value', propValue);
    attr.$set('value', value);
  }
inputs use the value attribute as their default value if the value property is not set.
 Once the value property has been set (by adding input), it will not react to changes to
 the value attribute anymore. Setting both attribute and property fixes this behavior, and
 makes it possible to use ngValue as a sort of one-way bind.