2017-04-18 38 views
0

輸入域的電子郵件或手機號碼,如果用戶輸入電子郵件ID,需要顯示電子郵件圖標,手機號碼顯示國家代碼
表單驗證手機號碼驗證顯示跨度+91,電子郵件ID驗證顯示圖標,但這不是工作..如何更改圖標取決於移動沒有,電子郵件標識

<ion-item [class.error]="!mobilenumber.valid && mobilenumber.touched" class="tog_input animated fadeInLeft delay"> 
      <span item-left *ngIf="mobIcon == true" class="countryCode">+91</span> 
       <ion-icon name="ios-person" *ngIf="emailIcon == true" item-left color="light" class="PreLoginIcon" ></ion-icon> 
      <ion-label id="output" class="labels" stacked floating> enter email/ mobile no</ion-label> 
       <ion-input type="text" [(ngModel)]=" LoginObj.mobilenumber" maxlength="45" formControlName="mobilenumber" ></ion-input> 
      </ion-item> 

    constructor() { 
    this.registerForm = formBuilder.group({ 
     'mobilenumber': ['', Validators.compose([Validators.required, Validators.minLength(5), this.MailorNumber])], 
     'Password': ['', Validators.compose([Validators.required, Validators.minLength(2)])] 
    }); 
    this.mobilenumber = this.registerForm.controls['mobilenumber']; 
    this.Password = this.registerForm.controls['Password']; 

    } 
    MailorNumber(control: FormControl): { [s: string]: boolean } { 
     var email = /^(([^<>()\[\]\.,;:\[email protected]\"]+(\.[^<>()\[\]\.,;:\[email protected]\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\[email protected]\"]+\.)+[^<>()[\]\.,;:\[email protected]\"]{2,})$/i; 
     var mob = /(^([1-9]{1})([0-9]{9})$)/; 
      if ((control.value != '')) { 
       return { MailorNumber: true }; 
      } 
      else if (!(control.value.match(mob))){ 
       this.mobIcon= true; 
       return { MailorNumber: true }; 

      } 
      else if(!(control.value.match(email))){ 
      this.emailIcon= true; 
      return { MailorNumber: true }; 

      }} 
+0

請指出您面臨的問題以及您嘗試解決的問題。否則,它聽起來像「爲我完成這項任務」。 –

+0

表單驗證手機號碼驗證顯示範圍+91,電子郵件Id驗證顯示圖標,但這不工作... – sridharan

回答

0

檢查你的邏輯if語句:

if ((control.value != '')) { // <-- returns true if control has value 
    return { MailorNumber: true }; 
} 
else if (!(control.value.match(mob))){ // <-- if the control has value how to evaluate this? 
    this.mobIcon= true; 
    return { MailorNumber: true }; 
} 
else if(!(control.value.match(email))){ // <-- and this? 
    this.emailIcon= true; 
    return { MailorNumber: true }; 
} 

當然應該讀的東西是這樣的:

if (!control.value) { 
    return { MailorNumber: true }; 
} else if (control.value.match(email)) { 
    this.emailIcon = true; 
    return { MailorNumber: true }; 
} else if (control.value.match(mob)) { 
    this.mobIcon = true; 
    return { MailorNumber: true }; 
} 
+0

錯誤無法讀取屬性'mobIcon' – sridharan

+0

所以mobIcon是未定義的。這可能是上百種不同的原因。在你提供的代碼片段中,如果你的if語句存在錯誤,你將模板驅動的表單與模型驅動的表單混合在一起,MailorNumber似乎被用來作爲自定義的驗證器,但實現沒有任何意義。我建議你提供一名運動員,我相信有人可以幫助你。 – unitario