Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ngAfterViewInit() {
- this.username.update
- .debounceTime(500) // wait 1/2 second before emitting last event
- .distinctUntilChanged() // only emit value if different from last value
- .subscribe((username: string) => {
- let data = { type: 'username', val: username };
- this._loginSrvc.chkUser(data).subscribe((response: IChkUserResponse)=>{
- if(response.isAvailable === false)
- this.username.control.setErrors({'taken': {value: this.username.value}});
- });
- });
- }
- <mat-form-field fxFlex>
- <input matInput placeholder="Username" aria-label="Username" forbiddenCharacters=';"\/[]{}()' required [(ngModel)]="model.username" #username="ngModel" id="username" name="username">
- <mat-error *ngIf="newUserFrm.hasError('required','username')">Username is required</mat-error>
- <mat-error *ngIf="newUserFrm.hasError('forbiddenCharacters','username')">{{forbiddenChars.error}}</mat-error>
- <mat-error *ngIf="newUserFrm.hasError('taken','username')">The username <em>{{model.username}}</em> is taken</mat-error>
- </mat-form-field>
- it('should check for username availability',fakeAsync(()=>{
- spyOn(service,'chkUser');
- let input = fixture.debugElement.query(By.css('#username')).nativeElement;
- expect(input.value).toBe('');
- expect(component.username.value).toBe(null);
- input.value = user.username;
- input.dispatchEvent(new Event('input'));
- tick(500);
- expect(service.chkUser).toHaveBeenCalled();
- }));
Add Comment
Please, Sign In to add comment