2017-11-06 3 views
1

まず最初に、私はIonicとAngularに全く慣れていないと言いたいと思います。愚かな質問やコメントを私に許してください。テンプレートがプライベートプロパティにアクセスしている場合でもAngular AOTがコンパイルされる理由を教えてください。

AOTコンパイラがAngularとIonicでどのように動作するかをよりよく理解するために、いくつかのテストを行っています。

テンプレート内でアクセスするプライベートフィールドのコンポーネントがありますが、ビルドは完全に機能しているような状況に遭遇しました。私が理解していたことから、これはエラーを生成するはずです。

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

private username : string; 

private password : string; 

//etc etc 
} 

次のように私のテンプレートは、フィールドを参照しています

<ion-input [(ngModel)]="username" name="username" type="text" required> 
<ion-input [(ngModel)]="password" name="password" type="password" required> 

をその後、私は以下のコマンドを実行するとエラーが提示されなかった。

ionic build --prod 

Running app-scripts build: --prod 
[22:13:51] build prod started ... 
[22:13:51] clean started ... 
[22:13:51] clean finished in 1 ms 
[22:13:51] copy started ... 
[22:13:51] deeplinks started ... 
[22:13:51] deeplinks finished in 44 ms 
[22:13:51] ngc started ... 
[22:13:57] ngc finished in 5.39 s 
[22:13:57] preprocess started ... 
[22:13:57] preprocess finished in less than 1 ms 
[22:13:57] webpack started ... 
[22:13:57] copy finished in 5.66 s 
[22:14:23] webpack finished in 25.97 s 
[22:14:23] uglify started ... 
[22:14:23] sass started ... 
[22:14:24] sass finished in 1.35 s 
[22:14:24] cleancss started ... 
[22:14:25] cleancss finished in 1.22 s 
[22:14:37] uglify finished in 14.13 s 
[22:14:37] postprocess started ... 
[22:14:37] postprocess finished in 13 ms 
[22:14:37] lint started ... 
[22:14:37] build prod finished in 45.69 s 

私は角githubのに問題が開きましたこの同じ状況で:https://github.com/angular/angular/issues/14739

この問題で報告されたのは、最初の実行でngcがngfactoriesを生成し、2番目の実行でのみこれらのファクトリをJavascriptに変換してから検出するため、ngcを2回実行するとエラーが表示されることです問題。

[email protected] ~/ $ node_modules/.bin/ngc 
[email protected] ~/ $ node_modules/.bin/ngc 
src/pages/login/login.ngfactory.ts:234:32: Property 'username' is private and only accessible within class 'LoginPage'. 

チームの誰かが、いくつかのプライベートフィールドを忘れて静かにAOTビルドを壊した場合、この状況が問題になる可能性があります。

は、このシナリオに直面:

  • AOTは、私はイオンビルドを実行しているときにエラーを報告していけないのはなぜ?
  • ionic-cliでエラーが表示されるように設定を調整する必要はありますか?
  • テンプレートでアクセスされるプライベートフィールドの使用に関してAOTに変更がありましたか?

答えて

1

ここに別の方法があります。Angular Language Service拡張機能をインストールすると簡単にそれらのエラーが表示されます。

enter image description here

VSコードの問題セクション:

enter image description here

HTMLコードに

関連する問題