#angular
#angular
Вопрос:
Здесь я использую реактивные формы для привязки данных.Я столкнулся с некоторой проблемой при отключении и включении кнопки.
На самом деле, я изначально устанавливаю некоторое значение для текстового поля.
Теперь я хочу, чтобы кнопка обновления была отключена, пока пользователь что-то не введет. Это похоже на обновление строки в таблице.
this.firstName= "Angular"
this.newform = this.fb.group({
FirstName: [this.firstName, [Validators.required, Validators.minLength(1)]],
});
<form [formGroup]="newform" >
<mat-form-field appearance="outline" fxFlex="100%">
<mat-label>Name</mat-label>
<input matInput placeholder="" formControlName="FirstName" type="text" required>
</mat-form-field>
<button class="btn" (click)= "onSubmit()" mat-raised-button color="primary" [disabled]="!FirstName" >Update</button>
</form>
Комментарии:
1. Почему вы проверяете
FirstName
?. Сделайте[disabled]="!newform?.get('dataSource').value "
вместо этого.2. Во-первых: вы должны установить значение placeholder not для текста, и вы должны отключить кнопку для новой формы. Если новая форма недопустима, отключите кнопку.
Ответ №1:
Вы можете создать средство получения в своем компоненте
get hasFirstName():boolean {
return !!this.newform.get('dataSource').value
}
и затем в вашем шаблоне добавьте отключенный ввод вашей кнопки:
[disabled]='!hasFirstName'
надеюсь, это поможет
Комментарии:
1. Не повезло.. Можете ли вы вернуться к коду, в который я внес пару изменений
2. Как и предлагал @Sachin Jagtap, поскольку вы получили подтверждение для вашего элемента управления формой, который будет контролировать действительность всей вашей формы, вы можете включить / отключить кнопку с проверкой достоверности [отключено] =’newform.invalid’
3. Изначально я привязываю некоторое значение к входным данным, поданным при загрузке компонента. Даже если я установлю [disabled] =’newform.invalid’, кнопка будет включена, потому что внутри нее есть значение.
4. Это похоже на операцию обновления, у которой уже есть значения. Если пользователь хочет обновить или отредактировать тот же текст, кнопка должна включить
5. Тогда, вероятно, вы захотите использовать
dirty
илиtouched
свойства вместоinvalid
. Проверьте это angular.io/guide/form-validation#why-check-dirty-and-touched и попробуйте[disabled]='newform.dirty'
или[disabled]='newform.touched'