Bee*_*ice 20 deployment npm typescript angular2-aot angular
Angular 2 rc 6
,typescript 2
,node 4.5.0
,npm 2.15.9
上Windows 7
我正试图从即时编译转变为提前编译,我依赖这些资源:
我知道我需要运行编译器ngc
来生成ngfactory.ts
文件,我需要更改main.ts
为使用platformBrowser
而不是platformBrowserDynamic
引导程序.我遇到了障碍,但不知道如何继续.
1.我已确认使用即时编译可以正常运行App.我main.ts
是:
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
Run Code Online (Sandbox Code Playgroud)
2.我清除了生产文件夹中的所有应用程序文件,但保留了第三方库(例如:Angular 2,Angular 2 Material)
3.我运行"node_modules/.bin/ngc" -p ./
它运行时没有输出到控制台.我看到了.ngfactory.ts
每个.ts
组件和模块的文件.我还看到了.css.shim.ts
每个.css
持有组件样式的文件.此外,.js
和.js.map
文件已被transpiled,并放置在生产目录
4.如果我此时尝试运行应用程序,我会看到包含组件模板的404 not found
所有.html
文件的错误
5.我手动将所有模板文件(.html
)移动到生产目录并运行应用程序.它运行正常,但它仍然使用即时编译(255个请求,包括compiler.umd.js
)
6.我改变main.ts
为:
enableProdMode();
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
Run Code Online (Sandbox Code Playgroud)
就其自身而言,由于新代码尚未编译,因此没有任何区别.但是,我不知道该怎么做.
我应该再跑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
Run Code Online (Sandbox Code Playgroud)
使用AoT编译是否意味着我必须将所有类属性公开?我错过了一步吗?
pko*_*rce 37
对于给定组件,其模板访问的所有成员(方法,属性)必须在提前编译方案中是公共的.这是因为模板被转换为TS类.生成的类和组件现在是2个单独的类,您不能访问跨类的私有成员.
简而言之:如果要使用提前编译,则无法访问模板中的私有成员.
归档时间: |
|
查看次数: |
5719 次 |
最近记录: |