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 我明白,我需要运行编译器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类的事实。一个生成的类和一个组件现在是两个不同的类,你不能访问私人成员跨类。
简而言之:如果您想使用预先编译,您将无法访问模板中的私有成员。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |