AoT を使用して ViewChild が見つからない
- サードパーティの libサポートAoTを取得した後、コンパイル時にエラーなしでコンパイルに成功しまし
ngc
た! - このサードパーティのライブラリをプロジェクトに挿入するため、プロジェクトは
--aot
フラグを使用して CLI でコンパイルされ、コンパイル中にエラーは発生しませんが、ナビゲーターでアプリを開くと、次のようになります。
ReferenceError: nameColumnHeader が定義されていません
- これ
nameColumnHeader
はViewChild()
デコレータです:
@ViewChild('nameColumnHeader') nameColumnHeader: TemplateRef<any>;
もちろん、私は<template #nameColumnHeader...>
内部HTMLを持っています。この ViewChild を削除すると、別の問題が発生します #material2/sidenav コンポーネントの終了 ...
何が問題なのかわかりません。ちなみに、プロジェクトでng serve --prod --aotを実行したときに何が問題なのかcliが教えてくれないのはなぜですか!!!
AoT を使用してより大きな main.js をバンドルする
私はすべてのViewChild()
再コンパイルを削除し--aot
、ページは正しく表示されますが、main.js のサイズを
使用してコンパイルすると1836 Koになり、AoT でコンパイルすると main.jsのサイズは : 1860Koになります。ng build --prod
ng build --prod --aot
役に立つ場合
アップデート:
ViewChild を使用するときは、セミコロンを使用する必要があります!!! AOTなしでコンパイルするときにセミコロンなしでViewChildを書くことができるのは奇妙ですが、AoTではセミコロンが必要です