import { EventEmitter } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { IFormService } from './form-service.interface'; import { IFormUtils } from './form-utils.interface'; import { Observable } from 'rxjs'; /** * Utilitário de formulário para reduzir boilerplate de interações com um serviço que salve dados * @example * export class Component implements OnInit, OnDestroy { * private formUtils: FormUtilsWithService; * private formService: IFormService; * ngOnDestroy() { * this.formUtils.destroy(); * } * ngOnInit(): void { * this.formUtils = new FormUtilsWithService(this.form, this.formService); * } * //Salvando dados do formulário * salvar() { * this.formUtils.save().subscribe(() => {}); * } * // Exemplo exportando comportamento de formulário alterado e salvo * @Output() * get formularioAlterado(): EventEmitter { * return this.formUtils.formChanged; * } * @Output() * get formularioSalvo(): EventEmitter { * return this.formUtils.formSaved; * } * } */ export declare class FormUtilsWithService implements IFormUtils { private form; readonly service: IFormService; readonly formSaved: EventEmitter; readonly formChanged: EventEmitter; private formUtils; private destroy$; constructor(form: FormGroup, service: IFormService, formSaved?: EventEmitter, formChanged?: EventEmitter); /** * Verifica se o formulário foi alterado e está valido. * Solicita ao serviço para salvar * Emite o resultado */ save(): Observable; /** * Remove quaisquer subscrições da classe, evitando memory leak. * Deve ser chamado no ngOnDestroy do componente */ destroy(): void; /** * Implementação para verificar se o formulário possui algum controle alterado */ isFormChanged(): boolean; /** * Implementação para marcar o formulário como não mechido pelo usuário */ markFormPristine(): void; /** * Implementação para verificar a validade do formulário como um todo e marcar os campos inválidos */ executeFormValidation(): boolean; /** * Retorna o form relacionado; */ getForm(): FormGroup; }