</kbd>.
</p>
<div class="form-group"
- [ngClass]="{'has-error': invalidControl(formDir.submitted)}">
+ [ngClass]="{'has-error': deletionForm.showError('confirmation', formDir)}">
<input type="text"
class="form-control"
name="confirmation"
formControlName="confirmation"
autofocus>
<span class="help-block"
- *ngIf="invalidControl(formDir.submitted,'required')"
+ *ngIf="deletionForm.showError('confirmation', formDir, 'required')"
i18n>
This field is required.
</span>
<span class="help-block"
- *ngIf="invalidControl(formDir.submitted, 'pattern')">
+ *ngIf="deletionForm.showError('confirmation', formDir, 'pattern')">
'{{ confirmation.value }}'
<span i18n>doesn't match</span>
'{{ pattern }}'.
import { Component, NgModule, NO_ERRORS_SCHEMA, TemplateRef, ViewChild } from '@angular/core';
import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
-import { ReactiveFormsModule } from '@angular/forms';
+import { NgForm, ReactiveFormsModule } from '@angular/forms';
import { BsModalRef, BsModalService, ModalModule } from 'ngx-bootstrap';
import { Observable, Subscriber, timer as observableTimer } from 'rxjs';
expect(component.modalRef.hide).toHaveBeenCalled();
});
- describe('invalid control', () => {
- const testInvalidControl = (submitted: boolean, error: string, expected: boolean) => {
- expect(component.invalidControl(submitted, error)).toBe(expected);
+ describe('validate confirmation', () => {
+ const testValidation = (submitted: boolean, error: string, expected: boolean) => {
+ expect(
+ component.deletionForm.showError('confirmation', <NgForm>{ submitted: submitted }, error)
+ ).toBe(expected);
};
beforeEach(() => {
});
it('should test empty values', () => {
- expect(component.invalidControl).toBeTruthy();
component.deletionForm.reset();
- testInvalidControl(false, undefined, false);
- testInvalidControl(true, 'required', true);
+ testValidation(false, undefined, false);
+ testValidation(true, 'required', true);
component.deletionForm.reset();
changeValue('let-me-pass');
changeValue('');
- testInvalidControl(true, 'required', true);
+ testValidation(true, 'required', true);
});
it('should test pattern', () => {
changeValue('let-me-pass');
- testInvalidControl(false, 'pattern', true);
+ testValidation(false, 'pattern', true);
changeValue('ctrl-test');
- testInvalidControl(false, undefined, false);
- testInvalidControl(true, undefined, false);
+ testValidation(false, undefined, false);
+ testValidation(true, undefined, false);
});
});
-import {
- Component, OnInit, TemplateRef, ViewChild
-} from '@angular/core';
-import { FormControl, FormGroup, Validators } from '@angular/forms';
+import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
+import { FormControl, Validators } from '@angular/forms';
import { BsModalRef } from 'ngx-bootstrap';
import { Observable } from 'rxjs';
+import { CdFormGroup } from '../../forms/cd-form-group';
import { SubmitButtonComponent } from '../submit-button/submit-button.component';
@Component({
deletionMethod: Function;
modalRef: BsModalRef;
- deletionForm: FormGroup;
+ deletionForm: CdFormGroup;
confirmation: FormControl;
// Parameters are destructed here than assigned to specific types and marked as optional
- setUp({modalRef, metaType, deletionMethod, pattern, deletionObserver, description}:
- { modalRef: BsModalRef, metaType: string, deletionMethod?: Function, pattern?: string,
- deletionObserver?: () => Observable<any>, description?: TemplateRef<any>}) {
+ setUp({
+ modalRef,
+ metaType,
+ deletionMethod,
+ pattern,
+ deletionObserver,
+ description
+ }: {
+ modalRef: BsModalRef;
+ metaType: string;
+ deletionMethod?: Function;
+ pattern?: string;
+ deletionObserver?: () => Observable<any>;
+ description?: TemplateRef<any>;
+ }) {
if (!modalRef) {
throw new Error('No modal reference');
} else if (!metaType) {
ngOnInit() {
this.confirmation = new FormControl('', {
- validators: [
- Validators.required
- ],
+ validators: [Validators.required],
updateOn: 'blur'
});
- this.deletionForm = new FormGroup({
+ this.deletionForm = new CdFormGroup({
confirmation: this.confirmation
});
}
- invalidControl(submitted: boolean, error?: string): boolean {
- const control = this.confirmation;
- return !!(
- (submitted || control.dirty) &&
- control.invalid &&
- (error ? control.errors[error] : true)
- );
- }
-
updateConfirmation($e) {
if ($e.key !== 'Enter') {
return;
}
stopLoadingSpinner() {
- this.deletionForm.setErrors({'cdSubmitButton': true});
+ this.deletionForm.setErrors({ cdSubmitButton: true });
}
}