2016-12-05 3 views
0

Я новичок в угловом 2, я создаю форму «Пользовательский реестр», но он показывает ошибку в «Свойстве не существует по типу» в телефоне число Проверка.Ошибка 1068: Имущество не существует по типу угловой 2 (AOT)

Я собираюсь в JIT и AOT.

В компиляторе JIT отображается сообщение об ошибке и запускается моя регистрационная форма пользователя, она работает исправно. но когда я компилирую с ошибкой компиляции AOT.

Читаю угловой 2 формы официальной проверки документа здесь ссылка Angular 2 form validation

Ниже мой Html форма и составитель выход

Html Форма

<form class="ui large form" method="post" (ngSubmit)="onSubmit(registerForm.form.valid)" #registerForm="ngForm" novalidate> 
     <sm-loader [complete]="!formSubmited" class="inverted" text="Loading..."></sm-loader> 
     <div class="form-group"> 
      <div class="col-md-12 img-bottom"> 
       <div class="col-md-offset-4"> 
        <img (click)="profileImage.click()" class="img img-responsive img-circle ui middle aligned tiny circular image profileImage" 
         [src]="profileImageSrc" /> 
        <input class="form-control user-reg-img" (change)="fileChangeEvent($event)" type="file" accept="image/*" #profileImage [hidden]="true" 
        /> 
       </div> 
       <div class="col-md-12 image-padding"> 
        <span class="user-reg-img-name" (click)="profileImage.click()">{{profileImageName}}</span> 
       </div> 
      </div> 
     </div> 
     <div class="form-group"> 
      <label><strong>Signup with Email Address:</strong></label> 
     </div> 

     <div class="form-group"> 
      <p class="success text-center">{{successMessage}}</p> 
      <p class="error text-center">{{errorMessage}}</p> 
      <div class="field"> 
       <input type="text" name="name" placeholder="Name" [(ngModel)]="register.name" #name="ngModel" required class="form-control input-reg" 
       /> 
       <div [hidden]="name.valid || name.pristine" class="error text-left"> 
        Name is required 
       </div> 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="field"> 
       <input class="form-control input-reg" type="email" name="email" placeholder="Email" [(ngModel)]="register.email" #email="ngModel" 
        required /> 
       <div [hidden]="email.valid || email.pristine" class="error text-left"> 
        Email is required 
       </div> 
      </div> 
     </div> 


     <div class="form-group"> 
      <input type="text" id="mobile" class="form-control input-reg" required minlength="10" maxlength="10" name="mobile" [(ngModel)]="register.mobile" 
       placeholder="Phone Number" #mobile="ngModel" pattern="[0-9]+"> 
      <div *ngIf="mobile.errors && (mobile.dirty || mobile.touched)"> 
       <div class="error text-left" [hidden]="!mobile.errors.required"> 
        Mobile Number is required 
       </div> 
       <div class="error text-left" [hidden]="!mobile.errors.minlength"> 
        Mobile Number must be at least 10 characters long. 
       </div> 
       <div class="error text-left" [hidden]="!mobile.errors.maxlength"> 
        Monile Number cannot be more than 10 characters long. 
       </div> 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="field"> 
       <input class="form-control input-reg" type="password" name="password" placeholder="Password" [(ngModel)]="register.password" 
        #password="ngModel" required /> 
       <div [hidden]="password.valid || password.pristine" class="error text-left"> 
        Password is required 
       </div> 
      </div> 
     </div> 

     <div class="form-group"> 
      <input type="checkbox" name="isAgree" [(ngModel)]="register.isAgree" #isAgree="ngModel" required /> 
      <label id="label-terms-cond">I Agree to Post Bucks <a href="#">Terms & Conditions</a></label> 
      <div [hidden]="!showTermsAgreeErrorMsg" class="error text-left"> 
       Please agree the terms and conditions to continue 
      </div> 
     </div> 

     <div class="form-group"> 
      <textarea rows="4" class="form-control font-small terms-cond-textarea" rows="7">You must follow any policies made available to you within the Services.</textarea> 
     </div> 

     <div class="form-group"> 
      <button class="fluid yellow large ui button btn btn-block btn-warning reg-btn-submit" type="submit">Signup</button> 
     </div> 
    </form> 

АОТ Выход

AOT error

Заранее спасибо

Викрам

+0

Я предполагаю, что это из '[hidden] ="! Mobile.valid.required "'. –

+0

Я также попробовал mobile.errors.required, но тот же возврат ошибки –

+0

Тогда я не знаю. –

ответ

1

Это выглядит JIT компилятор никогда не будет проверять тип mobile.errors, но АОТ проверить его на компиляции, посмотрев эту строку:

<div *ngIf="mobile.errors && (mobile.dirty || mobile.touched)"> 

Согласно этой строке mobile.errors является логическим, вы получите свои следы ... Я не могу воспроизвести эту ошибку (проблема с версией ?), Но, возможно, следующий код будет исправить:

<div *ngIf="(mobile.errors != null) && (mobile.dirty || mobile.touched)"> 

Существует открытая проблема здесь: https://github.com/angular/angular/issues/11425

-1

Вот мой ответ, есть актуальная проблема, которая требуется не найден под mobile.errors объект. ниже - мой единственный код строки.

!mobile.errors['required'] 

Если поле объекта не найдено, мы используем его как массив в шаблоне.

+0

В этой строке кода вы используете необработанную карту Javascript вместо объекта typescript (то есть логического). Это обходной путь. –