Я использую динамические кнопки в угловых реактивных формах.Я пытаюсь использовать валидаторы, чтобы кнопки скрывались или менялись, когда ввод нулевой или недействительный.до сих пор я мог скрыть кнопку, изменить редактирование, чтобы сохранить, когда ввод не нулевой.но когда он недействителен, он все еще сохраняется, и я не хочу этого.
У меня есть компонент details, в котором находится моя форма.я использую * ngSwitchCase и директиву для редактирования.Другой компонент - buttonsComponent, который в основном включает в себя цикл кнопок и атрибуты hidden и disable.моя основная логика в app.component.
это часть моего app.component:
buttons: ButtonDef[] = [
{ label: 'Edit', iconClass: 'fa-pen-square',
callbackFn: x => {
this.editMode = true;
},
visibleFn: x => !this.editMode,
enabledFn: x => x.canEdit,
},
{ label: 'Save', iconClass: 'fa-check-square',
callbackFn: x => {
// console.log('Save pressed', x);
this.editMode = false;
this.hasChanges = false;
const updated: Update<Document> = {
id: x.id,
changes: this.details.getUpdatedValues()
};
this.store.dispatch(new DocumentActions.Save(updated));
},
visibleFn: x => this.editMode,
enabledFn: x => this.hasChanges
},
{ label: 'Cancle', iconClass: 'fa-undo',
callbackFn: x => {
// console.log('Reset pressed', x);
this.editMode = false;
},
visibleFn: x => this.editMode
}
];
editMode: boolean;
hasChanges = false;
constructor(private readonly store: Store<any>, private readonly api:
AppService) {
this.documents$ = api.getAllDocuments();
}
onValueUpdated(event: boolean) {
this.hasChanges = event;
this.btns.update();
}
onSelectedId(event: string) {
// console.log(event);
if (event) {
this.document$ =
this.store.pipe(select(DocumentSelectors.getById(event)));
this.store.dispatch(new DocumentActions.Load(event));
}
}
Я хочу отключить кнопку Сохранить, пока не будет заполнено обязательное поле.