opt-cc/static/src/app/common/show-error/show-error.component.ts

90 lines
2.7 KiB
TypeScript
Raw Normal View History

2018-10-03 14:22:19 +02:00
import {Component, Input, OnInit} from '@angular/core';
2017-09-03 12:49:59 +02:00
import {FormGroup, NgForm} from '@angular/forms';
2018-10-03 14:22:19 +02:00
import {TranslateService} from '@ngx-translate/core';
2017-05-10 11:04:06 +02:00
@Component({
selector: 'show-error',
template: `
<div *ngIf="errorMessages" class="alert alert-danger">
<div *ngFor="let errorMessage of errorMessages">
{{errorMessage}}
</div>
</div>`
})
export class ShowErrorComponent implements OnInit {
2017-05-10 11:04:06 +02:00
2018-07-02 21:57:56 +02:00
// tslint:disable-next-line:no-input-rename
2018-03-08 10:17:10 +01:00
@Input('controlPath') controlPath;
2018-03-08 09:44:35 +01:00
2018-07-02 21:57:56 +02:00
// tslint:disable-next-line:no-input-rename
2018-03-08 10:17:10 +01:00
@Input('displayName') displayName = '';
2017-05-10 11:04:06 +02:00
private form: FormGroup;
2018-10-03 14:22:19 +02:00
constructor(ngForm: NgForm,
private translate: TranslateService) {
2017-05-10 11:04:06 +02:00
this.form = ngForm.form;
}
2018-10-03 14:22:19 +02:00
ngOnInit() {
this.translate.setDefaultLang('de');
}
2017-05-10 11:04:06 +02:00
get errorMessages(): string[] {
const control = this.form.get(this.controlPath);
const messages = [];
if (!control || !(control.touched) || !control.errors) {
return null;
}
for (const code in control.errors) {
// Berechnung der lesbaren Fehlermeldungen
if (control.errors.hasOwnProperty(code)) {
const error = control.errors[code];
let message = '';
switch (code) {
case 'required':
2018-10-03 14:22:19 +02:00
this.translate.get('public.error.message.required', {fieldName: this.displayName})
.subscribe((res: string) => {
message = res;
});
2017-05-10 11:04:06 +02:00
break;
case 'minlength':
2018-10-03 14:22:19 +02:00
this.translate.get('public.error.message.min.length', {
fieldName: this.displayName,
boundary: error.requiredLength
})
.subscribe((res: string) => {
message = res;
});
2017-05-10 11:04:06 +02:00
break;
case 'maxlength':
2018-10-03 14:22:19 +02:00
this.translate.get('public.error.message.max.length', {
fieldName: this.displayName,
boundary: error.requiredLength
})
.subscribe((res: string) => {
message = res;
});
2017-05-10 11:04:06 +02:00
break;
case 'invalidEMail':
2018-10-03 14:22:19 +02:00
this.translate.get('public.error.message.email').subscribe((res: string) => {
message = res;
});
2017-05-10 11:04:06 +02:00
break;
case 'userNotFound':
2018-10-03 14:22:19 +02:00
this.translate.get('public.error.message.no.user').subscribe((res: string) => {
message = res;
});
2017-05-10 11:04:06 +02:00
break;
default:
2018-10-03 14:22:19 +02:00
this.translate.get('public.error.message.default', {fieldName: name}).subscribe((res: string) => {
message = res;
});
2017-05-10 11:04:06 +02:00
}
messages.push(message);
}
}
return messages;
}
}