まず最初に、私は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に変更がありましたか?