2016-11-12 119 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

相关问题