ngx-sp-infra 1.4.95 → 1.4.97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { UntypedFormGroup, UntypedFormArray } from '@angular/forms';
|
|
2
|
+
/**
|
|
3
|
+
* @summary Contém diversos métodos de utilidade para formulários
|
|
4
|
+
*/
|
|
2
5
|
export class FormUtils {
|
|
3
6
|
/** Verifica se um campo é inválido (Template Driven) */
|
|
4
7
|
static isInvalidFieldTemplate(control) {
|
|
@@ -12,7 +15,7 @@ export class FormUtils {
|
|
|
12
15
|
/** Verifica se um campo é inválido ou se possui algum erro customizado (Data Driven) */
|
|
13
16
|
static isInvalidFieldError(control) {
|
|
14
17
|
if (control) {
|
|
15
|
-
if (
|
|
18
|
+
if (!control.valid && (control.dirty || control.touched)) {
|
|
16
19
|
return true;
|
|
17
20
|
}
|
|
18
21
|
else {
|
|
@@ -53,5 +56,53 @@ export class FormUtils {
|
|
|
53
56
|
? config[validatorName]
|
|
54
57
|
: `Este validador - ${validatorName} - não foi implementado`);
|
|
55
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* @summary Mapeia os valores de um formulário reativo para um objeto de modelo.
|
|
61
|
+
*
|
|
62
|
+
* @description
|
|
63
|
+
* O método `mapFormToModel` recebe um objeto de modelo e um `FormGroup` do Angular,
|
|
64
|
+
* e retorna um novo objeto que combina as propriedades do modelo original com os valores
|
|
65
|
+
* atuais do formulário. Este método é útil para atualizar dinamicamente as propriedades
|
|
66
|
+
* de um modelo com base nos valores inseridos pelo usuário em um formulário.
|
|
67
|
+
*
|
|
68
|
+
* Se o objeto `record` ou o `formGroup` forem nulos ou indefinidos, o método retornará `null`.
|
|
69
|
+
* Caso contrário, o método retorna um novo objeto que inclui todas as propriedades
|
|
70
|
+
* do objeto original, sobrescrevendo-as com os valores atuais do formulário, se disponíveis.
|
|
71
|
+
*
|
|
72
|
+
* @param {object} record - O objeto de modelo original que será atualizado com os valores do formulário.
|
|
73
|
+
* @param {FormGroup} formGroup - O `FormGroup` contendo os valores inseridos pelo usuário.
|
|
74
|
+
* @returns {object | null} - Um novo objeto combinando o modelo original e os valores do formulário, ou `null` se `record` ou `formGroup` forem nulos ou indefinidos.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* // Suponha que você tenha um objeto de modelo `person` e um `FormGroup` chamado `personForm`.
|
|
78
|
+
* const person = {
|
|
79
|
+
* name: 'John Doe',
|
|
80
|
+
* age: 30,
|
|
81
|
+
* email: 'john.doe@example.com'
|
|
82
|
+
* };
|
|
83
|
+
*
|
|
84
|
+
* const personForm: FormGroup = this.formBuilder.group({
|
|
85
|
+
* name: ['Jane Doe'],
|
|
86
|
+
* age: [25],
|
|
87
|
+
* email: ['jane.doe@example.com']
|
|
88
|
+
* });
|
|
89
|
+
*
|
|
90
|
+
* const updatedPerson = this.mapFormToModel(person, personForm);
|
|
91
|
+
* // `updatedPerson` agora contém:
|
|
92
|
+
* // {
|
|
93
|
+
* // name: 'Jane Doe',
|
|
94
|
+
* // age: 25,
|
|
95
|
+
* // email: 'jane.doe@example.com'
|
|
96
|
+
* // }
|
|
97
|
+
*/
|
|
98
|
+
mapFormToModel(record, formGroup) {
|
|
99
|
+
if ((record === null || record === undefined) || (formGroup === null || formGroup === undefined)) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
...record,
|
|
104
|
+
...formGroup.value
|
|
105
|
+
};
|
|
106
|
+
}
|
|
56
107
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1pbmZyYS9zcmMvbGliL3V0aWxzL2Zvcm0tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRzNHOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFFcEIsd0RBQXdEO0lBQ3hELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxPQUFrQjtRQUM5QyxNQUFNLEdBQUcsR0FBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0RSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUErQjtRQUNuRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELHdGQUF3RjtJQUN4RixNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBK0I7UUFDeEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFBQyxPQUFPLElBQUksQ0FBQTtZQUFDLENBQUM7aUJBQ3BFLENBQUM7Z0JBQUMsT0FBTyxLQUFLLENBQUE7WUFBQyxDQUFDO1FBQ3ZCLENBQUM7YUFDSSxDQUFDO1lBQUMsT0FBTyxLQUFLLENBQUE7UUFBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUE4QztRQUNsRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBRXpCLElBQUksT0FBTyxZQUFZLGdCQUFnQixJQUFJLE9BQU8sWUFBWSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMvRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLENBQUM7UUFFSCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFpQixFQUFFLGFBQXFCLEVBQUUsY0FBb0IsRUFBRSxrQkFBMkI7UUFDaEgsTUFBTSxNQUFNLEdBQVM7WUFDbkIsVUFBVSxFQUFFLDJCQUEyQjtZQUN2QyxXQUFXLEVBQUUscUNBQXFDLGNBQWMsQ0FBQyxjQUFjLGNBQWM7WUFDN0YsV0FBVyxFQUFFLHFDQUFxQyxjQUFjLENBQUMsY0FBYyxjQUFjO1lBQzdGLEtBQUssRUFBRSxpQ0FBaUMsY0FBYyxDQUFDLEdBQUcsR0FBRztZQUM3RCxLQUFLLEVBQUUsaUNBQWlDLGNBQWMsQ0FBQyxHQUFHLEdBQUc7WUFDN0QsZUFBZSxFQUFFLFFBQVEsU0FBUyxpQkFBaUI7WUFDbkQsb0JBQW9CLEVBQUUsUUFBUSxTQUFTLDBCQUEwQjtZQUNqRSxXQUFXLEVBQUUsMkJBQTJCO1lBQ3hDLE9BQU8sRUFBRSw0QkFBNEI7U0FDdEMsQ0FBQztRQUVGLE9BQU8sQ0FBQyxrQkFBa0I7WUFDeEIsQ0FBQyxDQUFDLGtCQUFrQjtZQUNwQixDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3ZCLENBQUMsQ0FBQyxvQkFBb0IsYUFBYSx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFJRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFzQ0U7SUFDSyxjQUFjLENBQUMsTUFBYyxFQUFFLFNBQW9CO1FBQ3hELElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFBQyxPQUFPLElBQUksQ0FBQztRQUFDLENBQUM7UUFFbEgsT0FBTztZQUNMLEdBQUcsTUFBTTtZQUNULEdBQUcsU0FBUyxDQUFDLEtBQUs7U0FDbkIsQ0FBQztJQUNKLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdDb250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUFycmF5LCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5cclxuLyoqXHJcbiAqIEBzdW1tYXJ5IENvbnTDqW0gZGl2ZXJzb3MgbcOpdG9kb3MgZGUgdXRpbGlkYWRlIHBhcmEgZm9ybXVsw6FyaW9zXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRm9ybVV0aWxzIHtcclxuXHJcbiAgLyoqIFZlcmlmaWNhIHNlIHVtIGNhbXBvIMOpIGludsOhbGlkbyAoVGVtcGxhdGUgRHJpdmVuKSAqL1xyXG4gIHN0YXRpYyBpc0ludmFsaWRGaWVsZFRlbXBsYXRlKGNvbnRyb2w6IE5nQ29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmV0OiBhbnkgPSAhY29udHJvbC52YWxpZCAmJiAoY29udHJvbC5kaXJ0eSB8fCBjb250cm9sLnRvdWNoZWQpO1xyXG4gIFxyXG4gICAgcmV0dXJuIChyZXQgPyByZXQgOiBmYWxzZSlcclxuICB9XHJcbiAgXHJcbiAgLyoqIFZlcmlmaWNhIHNlIHVtIGNhbXBvIMOpIGludsOhbGlkbyAoRGF0YSBEcml2ZW4pICovXHJcbiAgc3RhdGljIGlzSW52YWxpZEZpZWxkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoY29udHJvbCA/ICFjb250cm9sLnZhbGlkICYmIChjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZCkgOiBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKiogVmVyaWZpY2Egc2UgdW0gY2FtcG8gw6kgaW52w6FsaWRvIG91IHNlIHBvc3N1aSBhbGd1bSBlcnJvIGN1c3RvbWl6YWRvIChEYXRhIERyaXZlbikgKi9cclxuICBzdGF0aWMgaXNJbnZhbGlkRmllbGRFcnJvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkKSkgeyByZXR1cm4gdHJ1ZSB9XHJcbiAgICAgIGVsc2UgeyByZXR1cm4gZmFsc2UgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7IHJldHVybiBmYWxzZSB9XHJcbiAgfVxyXG5cclxuICAvKiogVmFsaWRhIHRvZG9zIG9zIGNhbXBvcyBkbyBmb3JtdWzDoXJpbyAqL1xyXG4gIHN0YXRpYyB2YWxpZGF0ZUZpZWxkcyhmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAgfCBVbnR5cGVkRm9ybUFycmF5KTogdm9pZCB7XHJcbiAgICBPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChmaWVsZCk7XHJcbiAgXHJcbiAgICAgIGNvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIGNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgXHJcbiAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCB8fCBjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVGaWVsZHMoY29udHJvbCk7XHJcbiAgICAgIH1cclxuICBcclxuICAgIH0pO1xyXG4gIFxyXG4gIH0gICAgIFxyXG4gICAgICBcclxuICAvKiogT2J0w6ltIGEgbWVuc2FnZW0gZGUgZXJybyBjb25mb3JtZSBvIHZhbGlkYWRvciB1dGlsaXphZG8gKi9cclxuICBzdGF0aWMgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkTmFtZTogc3RyaW5nLCB2YWxpZGF0b3JOYW1lOiBzdHJpbmcsIHZhbGlkYXRvclZhbHVlPzogYW55LCBjdXN0b21FcnJvck1lc3NhZ2U/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY29uZmlnIDogYW55ID0ge1xyXG4gICAgICAncmVxdWlyZWQnOiBgRXN0ZSBjYW1wbyDDqSBvYnJpZ2F0w7NyaW8uYCxcclxuICAgICAgJ21pbmxlbmd0aCc6IGBFc3RlIGNhbXBvIGRldmUgcG9zc3VpciBubyBtw61uaW1vICR7dmFsaWRhdG9yVmFsdWUucmVxdWlyZWRMZW5ndGh9IGNhcmFjdGVyZXMuYCxcclxuICAgICAgJ21heGxlbmd0aCc6IGBFc3RlIGNhbXBvIGRldmUgcG9zc3VpciBubyBtw6F4aW1vICR7dmFsaWRhdG9yVmFsdWUucmVxdWlyZWRMZW5ndGh9IGNhcmFjdGVyZXMuYCxcclxuICAgICAgJ21pbic6IGBFc3RlIGNhbXBvIGRldmUgc2VyIG5vIG3DrW5pbW8gJHt2YWxpZGF0b3JWYWx1ZS5taW59LmAsXHJcbiAgICAgICdtYXgnOiBgRXN0ZSBjYW1wbyBkZXZlIHNlciBubyBtw6F4aW1vICR7dmFsaWRhdG9yVmFsdWUubWF4fS5gLFxyXG4gICAgICAnY3BjbnBqSW52YWxpZCc6IGBFc3RlICR7ZmllbGROYW1lfSBlc3TDoSBpbnbDoWxpZG8uYCxcclxuICAgICAgJ2NwY25wakludmFsaWREaWdpdCc6IGBFc3RlICR7ZmllbGROYW1lfSB0ZW0gdW0gZMOtZ2l0byBpbnbDoWxpZG8uYCxcclxuICAgICAgJ2luY29ycmVjdCc6IGBFc3RlIGNhbXBvIGVzdMOhIGludsOhbGlkby5gLFxyXG4gICAgICAnZW1haWwnOiBgRXN0ZSBlLW1haWwgZXN0w6EgaW52w6FsaWRvLmBcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIChjdXN0b21FcnJvck1lc3NhZ2VcclxuICAgICAgPyBjdXN0b21FcnJvck1lc3NhZ2VcclxuICAgICAgOiBjb25maWdbdmFsaWRhdG9yTmFtZV1cclxuICAgICAgICA/IGNvbmZpZ1t2YWxpZGF0b3JOYW1lXVxyXG4gICAgICAgIDogYEVzdGUgdmFsaWRhZG9yIC0gJHt2YWxpZGF0b3JOYW1lfSAtIG7Do28gZm9pIGltcGxlbWVudGFkb2ApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBAc3VtbWFyeSBNYXBlaWEgb3MgdmFsb3JlcyBkZSB1bSBmb3JtdWzDoXJpbyByZWF0aXZvIHBhcmEgdW0gb2JqZXRvIGRlIG1vZGVsby5cclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIE8gbcOpdG9kbyBgbWFwRm9ybVRvTW9kZWxgIHJlY2ViZSB1bSBvYmpldG8gZGUgbW9kZWxvIGUgdW0gYEZvcm1Hcm91cGAgZG8gQW5ndWxhciwgXHJcbiAgICogZSByZXRvcm5hIHVtIG5vdm8gb2JqZXRvIHF1ZSBjb21iaW5hIGFzIHByb3ByaWVkYWRlcyBkbyBtb2RlbG8gb3JpZ2luYWwgY29tIG9zIHZhbG9yZXMgXHJcbiAgICogYXR1YWlzIGRvIGZvcm11bMOhcmlvLiBFc3RlIG3DqXRvZG8gw6kgw7p0aWwgcGFyYSBhdHVhbGl6YXIgZGluYW1pY2FtZW50ZSBhcyBwcm9wcmllZGFkZXMgXHJcbiAgICogZGUgdW0gbW9kZWxvIGNvbSBiYXNlIG5vcyB2YWxvcmVzIGluc2VyaWRvcyBwZWxvIHVzdcOhcmlvIGVtIHVtIGZvcm11bMOhcmlvLlxyXG4gICAqIFxyXG4gICAqIFNlIG8gb2JqZXRvIGByZWNvcmRgIG91IG8gYGZvcm1Hcm91cGAgZm9yZW0gbnVsb3Mgb3UgaW5kZWZpbmlkb3MsIG8gbcOpdG9kbyByZXRvcm5hcsOhIGBudWxsYC5cclxuICAgKiBDYXNvIGNvbnRyw6FyaW8sIG8gbcOpdG9kbyByZXRvcm5hIHVtIG5vdm8gb2JqZXRvIHF1ZSBpbmNsdWkgdG9kYXMgYXMgcHJvcHJpZWRhZGVzIFxyXG4gICAqIGRvIG9iamV0byBvcmlnaW5hbCwgc29icmVzY3JldmVuZG8tYXMgY29tIG9zIHZhbG9yZXMgYXR1YWlzIGRvIGZvcm11bMOhcmlvLCBzZSBkaXNwb27DrXZlaXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVjb3JkIC0gTyBvYmpldG8gZGUgbW9kZWxvIG9yaWdpbmFsIHF1ZSBzZXLDoSBhdHVhbGl6YWRvIGNvbSBvcyB2YWxvcmVzIGRvIGZvcm11bMOhcmlvLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwfSBmb3JtR3JvdXAgLSBPIGBGb3JtR3JvdXBgIGNvbnRlbmRvIG9zIHZhbG9yZXMgaW5zZXJpZG9zIHBlbG8gdXN1w6FyaW8uXHJcbiAgICogQHJldHVybnMge29iamVjdCB8IG51bGx9IC0gVW0gbm92byBvYmpldG8gY29tYmluYW5kbyBvIG1vZGVsbyBvcmlnaW5hbCBlIG9zIHZhbG9yZXMgZG8gZm9ybXVsw6FyaW8sIG91IGBudWxsYCBzZSBgcmVjb3JkYCBvdSBgZm9ybUdyb3VwYCBmb3JlbSBudWxvcyBvdSBpbmRlZmluaWRvcy5cclxuICAgKlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogLy8gU3Vwb25oYSBxdWUgdm9jw6ogdGVuaGEgdW0gb2JqZXRvIGRlIG1vZGVsbyBgcGVyc29uYCBlIHVtIGBGb3JtR3JvdXBgIGNoYW1hZG8gYHBlcnNvbkZvcm1gLlxyXG4gICAqIGNvbnN0IHBlcnNvbiA9IHtcclxuICAgKiAgIG5hbWU6ICdKb2huIERvZScsXHJcbiAgICogICBhZ2U6IDMwLFxyXG4gICAqICAgZW1haWw6ICdqb2huLmRvZUBleGFtcGxlLmNvbSdcclxuICAgKiB9O1xyXG4gICAqIFxyXG4gICAqIGNvbnN0IHBlcnNvbkZvcm06IEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAqICAgbmFtZTogWydKYW5lIERvZSddLFxyXG4gICAqICAgYWdlOiBbMjVdLFxyXG4gICAqICAgZW1haWw6IFsnamFuZS5kb2VAZXhhbXBsZS5jb20nXVxyXG4gICAqIH0pO1xyXG4gICAqIFxyXG4gICAqIGNvbnN0IHVwZGF0ZWRQZXJzb24gPSB0aGlzLm1hcEZvcm1Ub01vZGVsKHBlcnNvbiwgcGVyc29uRm9ybSk7XHJcbiAgICogLy8gYHVwZGF0ZWRQZXJzb25gIGFnb3JhIGNvbnTDqW06XHJcbiAgICogLy8ge1xyXG4gICAqIC8vICAgbmFtZTogJ0phbmUgRG9lJyxcclxuICAgKiAvLyAgIGFnZTogMjUsXHJcbiAgICogLy8gICBlbWFpbDogJ2phbmUuZG9lQGV4YW1wbGUuY29tJ1xyXG4gICAqIC8vIH1cclxuICAqL1xyXG4gIHB1YmxpYyBtYXBGb3JtVG9Nb2RlbChyZWNvcmQ6IG9iamVjdCwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBvYmplY3QgfCBudWxsIHtcclxuICAgIGlmICgocmVjb3JkID09PSBudWxsIHx8IHJlY29yZCA9PT0gdW5kZWZpbmVkKSB8fCAoZm9ybUdyb3VwID09PSBudWxsIHx8IGZvcm1Hcm91cCA9PT0gdW5kZWZpbmVkKSkgeyByZXR1cm4gbnVsbDsgfVxyXG4gICAgXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5yZWNvcmQsXHJcbiAgICAgIC4uLmZvcm1Hcm91cC52YWx1ZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -1011,6 +1011,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
1011
1011
|
type: Input
|
|
1012
1012
|
}] } });
|
|
1013
1013
|
|
|
1014
|
+
/**
|
|
1015
|
+
* @summary Contém diversos métodos de utilidade para formulários
|
|
1016
|
+
*/
|
|
1014
1017
|
class FormUtils {
|
|
1015
1018
|
/** Verifica se um campo é inválido (Template Driven) */
|
|
1016
1019
|
static isInvalidFieldTemplate(control) {
|
|
@@ -1024,7 +1027,7 @@ class FormUtils {
|
|
|
1024
1027
|
/** Verifica se um campo é inválido ou se possui algum erro customizado (Data Driven) */
|
|
1025
1028
|
static isInvalidFieldError(control) {
|
|
1026
1029
|
if (control) {
|
|
1027
|
-
if (
|
|
1030
|
+
if (!control.valid && (control.dirty || control.touched)) {
|
|
1028
1031
|
return true;
|
|
1029
1032
|
}
|
|
1030
1033
|
else {
|
|
@@ -1065,6 +1068,54 @@ class FormUtils {
|
|
|
1065
1068
|
? config[validatorName]
|
|
1066
1069
|
: `Este validador - ${validatorName} - não foi implementado`);
|
|
1067
1070
|
}
|
|
1071
|
+
/**
|
|
1072
|
+
* @summary Mapeia os valores de um formulário reativo para um objeto de modelo.
|
|
1073
|
+
*
|
|
1074
|
+
* @description
|
|
1075
|
+
* O método `mapFormToModel` recebe um objeto de modelo e um `FormGroup` do Angular,
|
|
1076
|
+
* e retorna um novo objeto que combina as propriedades do modelo original com os valores
|
|
1077
|
+
* atuais do formulário. Este método é útil para atualizar dinamicamente as propriedades
|
|
1078
|
+
* de um modelo com base nos valores inseridos pelo usuário em um formulário.
|
|
1079
|
+
*
|
|
1080
|
+
* Se o objeto `record` ou o `formGroup` forem nulos ou indefinidos, o método retornará `null`.
|
|
1081
|
+
* Caso contrário, o método retorna um novo objeto que inclui todas as propriedades
|
|
1082
|
+
* do objeto original, sobrescrevendo-as com os valores atuais do formulário, se disponíveis.
|
|
1083
|
+
*
|
|
1084
|
+
* @param {object} record - O objeto de modelo original que será atualizado com os valores do formulário.
|
|
1085
|
+
* @param {FormGroup} formGroup - O `FormGroup` contendo os valores inseridos pelo usuário.
|
|
1086
|
+
* @returns {object | null} - Um novo objeto combinando o modelo original e os valores do formulário, ou `null` se `record` ou `formGroup` forem nulos ou indefinidos.
|
|
1087
|
+
*
|
|
1088
|
+
* @example
|
|
1089
|
+
* // Suponha que você tenha um objeto de modelo `person` e um `FormGroup` chamado `personForm`.
|
|
1090
|
+
* const person = {
|
|
1091
|
+
* name: 'John Doe',
|
|
1092
|
+
* age: 30,
|
|
1093
|
+
* email: 'john.doe@example.com'
|
|
1094
|
+
* };
|
|
1095
|
+
*
|
|
1096
|
+
* const personForm: FormGroup = this.formBuilder.group({
|
|
1097
|
+
* name: ['Jane Doe'],
|
|
1098
|
+
* age: [25],
|
|
1099
|
+
* email: ['jane.doe@example.com']
|
|
1100
|
+
* });
|
|
1101
|
+
*
|
|
1102
|
+
* const updatedPerson = this.mapFormToModel(person, personForm);
|
|
1103
|
+
* // `updatedPerson` agora contém:
|
|
1104
|
+
* // {
|
|
1105
|
+
* // name: 'Jane Doe',
|
|
1106
|
+
* // age: 25,
|
|
1107
|
+
* // email: 'jane.doe@example.com'
|
|
1108
|
+
* // }
|
|
1109
|
+
*/
|
|
1110
|
+
mapFormToModel(record, formGroup) {
|
|
1111
|
+
if ((record === null || record === undefined) || (formGroup === null || formGroup === undefined)) {
|
|
1112
|
+
return null;
|
|
1113
|
+
}
|
|
1114
|
+
return {
|
|
1115
|
+
...record,
|
|
1116
|
+
...formGroup.value
|
|
1117
|
+
};
|
|
1118
|
+
}
|
|
1068
1119
|
}
|
|
1069
1120
|
|
|
1070
1121
|
class FieldErrorMessageComponent {
|