Angular 2 rc 6
, typescript 2
, node 4.5.0
,npm 2.15.9
上Windows 7
我正在尝试从即时编译转移到提前编译,并且我依赖这些资源:
- Angular 2 - 提前编译如何
- https://github.com/angular/angular/tree/master/modules/@angular/compiler-cli#angular-template-compiler
我知道我需要运行编译器ngc
来生成ngfactory.ts
文件,并且我需要更改main.ts
为使用platformBrowser
而不是platformBrowserDynamic
引导。我遇到了障碍,不知道如何进行。
1.我已经确认应用程序使用即时编译运行没有错误。我main.ts
的是:
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
2.我从生产文件夹中清除了所有应用程序文件,但保留了第 3 方库(例如:Angular 2、Angular 2 Material)
3.我运行"node_modules/.bin/ngc" -p ./
这个运行没有输出到控制台。我看到我.ngfactory.ts
的每个.ts
组件和模块都有一个文件。我还看到.css.shim.ts
每个包含.css
组件样式的文件。另外,.js
和.js.map
文件已被转译并放置在生产目录中
4.如果此时我尝试运行该应用程序,我会看到包含组件模板404 not found
的所有文件的错误.html
5.我手动将所有模板文件 ( .html
) 移动到生产目录并运行应用程序。它运行良好,但它仍然使用即时编译(255 个请求,包括compiler.umd.js
)
6.我将我的更改main.ts
为:
enableProdMode();
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
就其本身而言,这没有任何区别,因为尚未编译新代码。但是,我不知道从这里做什么。
我应该再跑ngc
一次吗?如果是这样,我会收到很多类型的错误:
Error at C:/path/to/notify.component.ngfactory.ts:113:41: Property 'visible' is private and only accessible within class 'NotifyComponent'
... (many more like that with lots of properties from lots of components)
Compilation failed
使用 AoT 编译是否意味着我必须公开我的所有类属性?我错过了一步吗?