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';
|
2018-10-05 09:55:39 +02:00
|
|
|
import {SettingsService} from '../../services/settings.service';
|
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>`
|
|
|
|
})
|
2018-10-05 09:55:39 +02:00
|
|
|
export class ShowErrorComponent {
|
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,
|
2018-10-05 09:55:39 +02:00
|
|
|
private translate: TranslateService,
|
|
|
|
private settingsService: SettingsService) {
|
2017-05-10 11:04:06 +02:00
|
|
|
this.form = ngForm.form;
|
2018-10-05 09:55:39 +02:00
|
|
|
this.settingsService.getLanguage().subscribe((language) => this.translate.setDefaultLang(language));
|
2018-10-03 14:22:19 +02:00
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|