Ошибка машинописного текста. Свойство не существует для типа

Я новичок в angularjs 2 и ionic 2. Я работаю с формой angularjs с помощью валидаторов, FormControl и FormGroup. Все хорошо, когда я выполняю проект с помощью ionic serve --lab. но когда я создаю этот проект, он выдает ошибку: свойство username не существует для определенного типа.

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>

Все в порядке, пока я не запустил команду ionic build android для создания файла apk.
Кто-нибудь, пожалуйста, скажите мне, почему я получаю эти ошибки?

Я также ссылаюсь на эту ссылку: Свойство не существует по типу. TypeScript, но мне это не поможет:


person tushar balar    schedule 12.11.2016    source источник


Ответы (2)


Ionic2 использует предварительную компиляцию при сборке для Android. AoT требует:

А) собственность, которая должна быть публичной

Б) свойства, которые упоминаются в html, которые должны быть объявлены в компоненте.

Итак, чтобы решить вашу проблему, объявите общедоступное имя пользователя: строка; в компоненте, а также объявите другие имена, к которым вы обращаетесь в своей форме.

Или ... в html вы можете написать formControlName = 'user.username' и использовать свойство, которое вы уже объявили.

Не забудьте также объявить свой elementref в компоненте

person misha130    schedule 12.11.2016
comment
Могу ли я заставить компилятор AOT игнорировать некоторые ошибки типа html? - person kolexinfos; 07.12.2016
comment
@kolexinfos не видел вашего комментария, но посмотрите другой ответ. Они проигнорировали ошибки, используя свойство [] get, поэтому статический компилятор не проверял это. Вот как вы заставляете игнорировать проблемы - person misha130; 13.04.2017

person    schedule
comment
Спасибо @dhyanandra - person tushar balar; 23.11.2016