Browse Source

增加新旧密码不一致的校验

heyiwen 2 months ago
parent
commit
edebecb449

+ 2 - 2
src/app/app.config.ts

@@ -1,11 +1,11 @@
 export class AppConfig {
 	public static getServiceUrl() {
-    //return "http://192.168.0.68:8031/";
+    return "http://192.168.0.68:8031/";
     // return "http://localhost/";
     // return "https://jdks.lnc.edu.cn/";
     // return "http://localhost/LIOT/";
     //  return "http://liot.bowintek.com/";
-    return "http://localhost:18634/";
+    //return "http://localhost:18634/";
   }
 
 	public static backButtonClicked: Function = null;

+ 2 - 0
src/app/app.module.ts

@@ -53,11 +53,13 @@ import {CertisfierDistributePage} from "../pages/certisfier/certisfierdistribute
 import {ChangePassPageModule} from "../pages/changepass/changepass.module";
 import {ChangePassPage} from "../pages/changepass/changepass";
 import {EqualValidatorDirective} from "./directives/equal-validator.directive";
+import {NotEqualValidatorDirective} from "./directives/notequal-validator.directive";
 
 
 @NgModule({
   declarations: [
     EqualValidatorDirective,
+    NotEqualValidatorDirective,
     EMISWeb
   ],
   imports: [

+ 34 - 0
src/app/directives/notequal-validator.directive.ts

@@ -0,0 +1,34 @@
+import {Directive, Input} from '@angular/core';
+import { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';
+
+@Directive({
+  selector: '[notValidateEqual]',
+  providers: [
+    { provide: NG_VALIDATORS, useExisting: NotEqualValidatorDirective,
+      multi: true }
+  ]
+})
+export class NotEqualValidatorDirective implements Validator {
+  @Input('notValidateEqual') public notValidateEqual: string
+
+  validate(c: AbstractControl): {[key: string]: any} | null {
+    // self value
+    let v = c.value;
+
+    // control vlaue
+    let e = c.root.get(this.notValidateEqual);
+
+    // value not equal
+    if (e && v == e.value) {
+      return {
+        notValidateEqual: true
+      }
+    } else {
+      if (e) {
+        delete e.errors['validateEqual'];
+        if (!Object.keys(e.errors).length) e.setErrors(null);
+        return null;
+      }
+    }
+  }
+}

+ 2 - 1
src/pages/changepass/changepass.html

@@ -9,13 +9,14 @@
       </ion-item>
       <ion-item>
         <ion-label stacked>新密码*</ion-label>
-        <ion-input #newPassword="ngModel" [(ngModel)]="changePass.Password" validateEqual="confirmPass" name="newPassword" required pattern="^(?=.*?[0-9])(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[#?!@$%^&*-]).{8,}$" placeholder="新密码" type="password"></ion-input>
+        <ion-input #newPassword="ngModel" [(ngModel)]="changePass.Password" notValidateEqual="password" validateEqual="confirmPass" name="newPassword" required pattern="^(?=.*?[0-9])(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[#?!@$%^&*-]).{8,}$" placeholder="新密码" type="password"></ion-input>
       </ion-item>
       <span *ngIf="(newPassword.touched || newPassword.dirty) && newPassword.hasError('required')" class="help-block">请输入密码</span>
       <ion-item>
         <ion-label stacked>密码确认*</ion-label>
         <ion-input type="password" #confirmPass="ngModel" validateEqual="newPassword" name="confirmPass" required placeholder="再次输入密码" [(ngModel)]="changePass.PasswordRep"></ion-input>
       </ion-item>
+      <span *ngIf="(newPassword.touched || newPassword.dirty) && newPassword.hasError('notValidateEqual')" class="help-block">新密码不能和旧密码相同</span>
       <span *ngIf="newPassword.hasError('pattern')" class="help-block">密码须包含大小写英文、特殊字符、数字且长度大于或等于8位</span>
       <span *ngIf="(confirmPass.touched || confirmPass.dirty) && confirmPass.hasError('required')" class="help-block">请再次输入密码</span>
       <span *ngIf="(newPassword.touched || newPassword.dirty || confirmPass.touched || confirmPass.dirty) && (confirmPass.hasError('validateEqual') || newPassword.hasError('validateEqual'))" class="help-block">两次输入的密码必须一致</span>