Angular 2 Ahead-of-Time编译器:我必须让所有的类属性公开吗?

前端之家收集整理的这篇文章主要介绍了Angular 2 Ahead-of-Time编译器:我必须让所有的类属性公开吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
角度2 rc 6,typescript 2,节点4.5.0,npm 2.15.9在Windows 7上

我试图从即时到时间的编译,我依靠这些资源:

> Angular 2 – Ahead-of-time compilation how to
> https://github.com/angular/angular/tree/master/modules/@angular/compiler-cli#angular-template-compiler

我明白,我需要运行编译器ngc来生成ngfactory.ts文件,我需要更改main.ts以使用platformBrowser而不是platformBrowserDynamic来引导。我已经打了路障,不知道如何进行。

我已经确认应用程序运行时没有错误使用即时编译。我的主要是:

enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);

2.我清除我的生产文件夹中的所有应用程序文件,但保留第三方库(例如:角度2,角度2材质)

3.我运行“node_modules / .bin / ngc”-p ./这运行没有输出到控制台。我看到每个.ts组件和模块都有一个.ngfactory.ts文件。我也看到一个.css.shim.ts文件,用于保存组件样式的每个.css文件。此外,.js和.js.map文件已经被放置在生产目录中

4.如果我现在尝试运行该应用程序,那么我发现所有保存组件模板的.html文件中找到404错误

5.我手动将所有模板文件(.html)移动到生产目录并运行应用程序。它运行正常,但它仍然使用即时编译(255个请求,包括compiler.umd.js)

我把我的主要改为:

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编译是否意味着我必须将我的所有类属性都公开?我错过了一步吗?

对于给定的组件,其模板访问的所有成员(方法属性)必须在提前编译场景中公开。这是由于模板变成TS类的事实。一个生成的类和一个组件现在是两个不同的类,你不能访问私人成员跨类。

简而言之:如果您想使用预先编译,您将无法访问模板中的私有成员。

猜你在找的Angularjs相关文章