Попробуйте использовать при вводе (при вводе каждого символа) или при размытии - при переходе от поля.
<InputText id="name" @bind-Value="Contact.Name" @oninput="NameChanged" @onblur="NameChanged"></InputText>
bind-value
использует @onchange
для обновления значения компонента. Поэтому вы не можете использовать их вместе.
Из документации MS :
Использование @bind со свойством CurrentValue () по сути эквивалентно следующему:
<input value="@CurrentValue"
@onchange="@((ChangeEventArgs __e) => CurrentValue =
__e.Value.ToString())" />
@code {
private string CurrentValue { get; set; }
}