Advertisement
Guest User

Untitled

a guest
Oct 11th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. import {Component, Inject} from '@angular/core';
  2. import {FormGroup, Validators, FormBuilder} from '@angular/forms';
  3. import {UsernameValidators} from './usernameValidators'
  4.  
  5. @Component({
  6. selector: 'signup-form',
  7. templateUrl: 'app/signup-form.component.html'
  8. })
  9. export class SignUpFormComponent {
  10.  
  11. form: FormGroup;
  12.  
  13. constructor(@Inject(FormBuilder) fb: FormBuilder) {
  14. this.form = fb.group({
  15. username: ['', Validators.compose([
  16. Validators.required,
  17. UsernameValidators.cannotContainSpace
  18. ]), UsernameValidators.shouldBeUnique],
  19. password: ['', Validators.required]
  20. })
  21. }
  22.  
  23. get username(): any {return this.form.get('username');}
  24. get password(): any {return this.form.get('password');}
  25.  
  26. }
  27.  
  28. <form [formGroup]="form" (ngSubmit)="signup()">
  29. <div class="form-group">
  30. <label for="username">Username</label>
  31. <input
  32. id="username"
  33. type="text"
  34. class="form-control"
  35. formControlName="username" placeholder="Username"
  36. >
  37. <div *ngIf="username.touched && username.errors">
  38. <div *ngIf="username.errors.shouldBeUnique" class="alert alert-danger">This username is already taken</div>
  39. </div>
  40. </form>
  41.  
  42. import {FormControl} from '@angular/forms';
  43.  
  44. export class UsernameValidators {
  45.  
  46. static shouldBeUnique(control: FormControl) {
  47. return new Promise((resolve, reject) => {
  48. setTimeout(function(){
  49. if (control.value == "mosh")
  50. resolve({ shouldBeUnique: true});
  51. else
  52. resolve(null);
  53. }, 1000)
  54. });
  55. }
  56. }
  57.  
  58. <div *ngIf="username.touched && username.errors">
  59. <div *ngIf="username.errors?.shouldBeUnique" class="alert alert-danger">This username is already taken</div>
  60. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement