2017-05-13 24 views
0

エラーが発生しました:... template.html:プロパティ 'email'がタイプ '{}'に存在しません「角度CLIを使用してコンパイルするとき> ngのビルドが角度 - プロパティ 'email'がタイプ '{}'にAoTコンパイルで存在しません

フォームテンプレート--aot --prod:タイプの電子メールを追加

export class LoginComponent { 

    public user = {}; 
    public errorMsg = ''; 
    email: any; 
    password: any; 

constructor(
... 
) { 

 <form (ngSubmit)="login()" #loginForm="ngForm"> 

      <input [(ngModel)]="user.email" id="email" 
        type="email" class="validate" name="email" required> 
      <label for="email">Email</label> 

      ... 

     </form> 

LoginComponent文字列または電子メールを:でいずれかをフォームのコンポーネントはそのトリックを行いません。これは、ファクトリの角度コンポーネント{}を参照しているようです。このエラーを回避するにはどうすればよいですか?

+1

コンポーネントのコードはどこですか?コードを読んだことがありますか?使用している 'email'フィールドは、コンポーネントの' user'フィールドにあります。コンポーネントではありません。 –

+0

「user」にはどのような値が割り当てられていますか? –

+0

私はこれがユーザーを助けるはずだと思う:any = {} – yurzui

答えて

2
public user = {}; 

このユーザーオブジェクトには、emailという名前のプロパティはありません。

​​

などに変更します。

+0

Perfect。ありがとう! –

1

問題はユーザーのインスタンス化に由来します。 (テンプレートでそれを使用する方法によって異なります)

public user = {'email': ''} 

をしかし、同様のエラーは、パスワードの入力が起こることがあります。

次のインスタンスが動作するはずです。

その場合はインスタンス化する必要があります:

public user = {'email': '', 
       'password': '' 
       } 

良い方法はユーザークラスを作成することです。その後、

export class User { 

    constructor(public email?: string, 
       public password?: string) { } 

} 

と、このようなあなたのLoginComponentでユーザーをインスタンス化:

public user: User = new User(); 
0

また、あなたは、オブジェクトの型を割り当てることができますuser.tsは次のようにする必要があります。

public user = <{email: string}>{}; 
関連する問題