2016-11-12 116 views
5

我是新的angularjs 2和離子2.我正在與Validators,FormControl和FormGroup的angularjs形式。當我使用ionic serve --lab來執行這個項目時,一切都很好。但是當我構建該項目時,它會給出錯誤:屬性「用戶名」在類型上不存在。Typescript錯誤屬性不存在

login.ts

import { Component } from '@angular/core'; 

import { LoadingController, NavController } from 'ionic-angular'; 

import { AuthService } from '../../service/authService'; 

import {Validators, FormBuilder, FormGroup, FormControl } from '@angular/forms'; 

@Component({ 
    selector: 'page-login', 
    templateUrl: 'login.html' 
}) 
export class LoginPage { 

    user: any; 

    submitAttempt: boolean = false; 

    slideTwoForm : FormGroup; 

    constructor(public navCtrl: NavController, 
       public authService: AuthService, 
       public loadingCtrl: LoadingController, 
       private formBuilder: FormBuilder) { 

    this.slideTwoForm = formBuilder.group({ 
     username: ['', Validators.compose([Validators.minLength(5),   Validators.required])], 
     description: ['', Validators.required], 
     age: [''] 
    }); 
    } 

    logForm() { 
    if (!this.slideTwoForm.valid) { 
     this.submitAttempt = true; 
    } 
    } 

} 

的login.html

<ion-content padding> 
    <form [formGroup]="slideTwoForm" (ngSubmit)="logForm()" novalidate> 
     <ion-item> 
      <ion-label floating>Username</ion-label> 
      <ion-input #username formControlName="username" type="text"></ion-input> 
     </ion-item> 
     <ion-item *ngIf="!slideTwoForm.controls.username.valid && submitAttempt"> 
      <p>Please enter a valid name.</p> 
     </ion-item> 
     <ion-item> 
      <ion-label>Description</ion-label> 
      <ion-textarea formControlName="description"></ion-textarea> 
     </ion-item> 
     <ion-item> 
      <ion-label floating>Age</ion-label> 
      <ion-input formControlName="age" type="number"></ion-input> 
     </ion-item> 
     <ion-item *ngIf="!slideTwoForm.controls.age.valid && submitAttempt"> 
      <p>Please enter a valid age.</p> 
     </ion-item> 
     <button ion-button type="submit">Submit</button> 
    </form> 
</ion-content> 

一切都很好,直到我跑離子構建Android命令生成apk文件。
有人可以告訴我爲什麼我收到這些錯誤嗎?

我還指此鏈接:Property does not exist on type. TypeScript但它不能幫助我:

回答

3
<ion-content padding> 
    <form [formGroup]="slideTwoForm" (ngSubmit)="logForm()" novalidate> 
     <ion-item> 
      <ion-label floating>Username</ion-label> 
      <ion-input #username formControlName="username" type="text"></ion-input> 
     </ion-item> 
     <ion-item *ngIf="!slideTwoForm.controls["username"].valid && submitAttempt"> 
      <p>Please enter a valid name.</p> 
     </ion-item> 
     <ion-item> 
      <ion-label>Description</ion-label> 
      <ion-textarea formControlName="description"></ion-textarea> 
     </ion-item> 
     <ion-item> 
      <ion-label floating>Age</ion-label> 
      <ion-input formControlName="age" type="number"></ion-input> 
     </ion-item> 
     <ion-item *ngIf="!slideTwoForm.controls["age"].valid && submitAttempt"> 
      <p>Please enter a valid age.</p> 
     </ion-item> 
     <button ion-button type="submit">Submit</button> 
    </form> 
</ion-content> 
+0

Thanx @dhyanandra –

2

Ionic2使用時間提前建設,以Android的編譯。 AOT要求:

A)性質是公共

B)被在html提到性能對組成進行聲明。

因此,要解決您的問題,請聲明 public username:string;在組件中,並且聲明您在表單中訪問的其他名稱。

或...在html中,您可以編寫formControlName ='user.username'並使用您已聲明的屬性。

不要忘記申報您的elementref在組件藏漢

+0

我可以得到AOT編譯器忽略一些HTML類型的錯誤 – kolexinfos

+0

@kolexinfos沒有看到你的評論,但看看其他的答案。他們通過使用[]屬性get來忽略錯誤,所以沒有靜態編譯器檢查。這就是你如何讓它忽略問題 – misha130

相關問題