问题标签 [angular2-aot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
266 浏览

angular - Angular2 angular-cli AOT 支持

操作系统?

Mac OSX 优胜美地

版本。

angular-cli:1.0.0-beta.21 节点:6.3.0 操作系统:darwin x64

失败给出的日志。(有很多)

导出的变量“slideInPartial”具有或正在使用来自外部模块“/node_modules/@angular/core/src/animation/metadata”的名称“AnimationEntryMetadata”,但无法命名。)

提及任何其他可能有用的细节。

tsconfig.aot.json:

{ "declaration": false, "compilerOptions": { "target": "es5", "module": "es2015", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "removeComments": false, "suppressImplicitAnyIndexErrors": true, "pretty": true, "allowUnreachableCode": false, "allowUnusedLabels": false, "noImplicitAny": false, "noImplicitReturns": false, "noImplicitUseStrict": false, "noFallthroughCasesInSwitch": true, "noEmitOnError": true, "outDir": "./dist/unbundled-aot", "types": [ "node", "jasmine" ], "paths": { "angular-cli/*": [ "./packages/angular-cli/*" ], "@angular-cli/ast-tools": [ "./packages/ast-tools/src" ], "@angular-cli/base-href-webpack": [ "./packages/base-href-webpack/src" ], "@ngtools/webpack": [ "./packages/webpack/src" ] } }, "exclude": [ "node_modules", "dist", "packages/angular-cli/blueprints/*/files/**/*", "dist/**/*", "node_modules/**/*", "tmp/**/*" ], "angularCompilerOptions": { "genDir": "aot", "skipMetadataEmit": true } }

执行命令: ng serve --aot -p src/tsconfig.aot.json

tsconfig.aot.json 中的任何更改都不会影响任何内容。任何想法或帮助将不胜感激。

谢谢

0 投票
1 回答
381 浏览

angular - AOT编译——forRoot等func调用问题

"Error encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function, resolving symbol DeclarantModule"尝试编译我的应用程序时出现错误。当模块具有forRootStoreModule.provideStore(rootReducer)函数调用时会发生这种情况。

如何解决?为什么会这样?我不明白,我认为它是使用配置导入模块的原生 angular 2 函数。

0 投票
2 回答
174 浏览

angular - 使用 angular cli 部署 angular 2 - 我需要托管哪些文件?

我正在使用 angular cli v1.0.0-beta.21 并使用 ng -b -prod -aot 我得到了预期

  • 索引.html
  • style.bundle.css
  • main.bundle.js

有一些文件我不知道它们的用途,希望你能启发我!

  • inline.bundle.js
  • style.bundle.js
  • 很多 .map 文件
  • main.bundle.js.gz

特别是我想知道我是否需要那些 .map 文件,因为它们确实是出价的(main.bundle.map 就像 3.3MB)

谢谢!

0 投票
1 回答
1102 浏览

angular - Angular 2 AOT 构建在文件中内联和生成源映射

我正在为 Angular 2 应用程序进行生产构建,并尝试使用 Angular 2 AoT 构建过程来减小包大小(在此处记录)

我通过 aot 编译器 CLI 和汇总 CLI 使构建工作,并且得到了我期望的输出。我的 bundle.js 文件约为 2k。并且有一个随附的源映射文件。耶!

接下来,我尝试将汇总合并到我现有的 gulp 构建中。一切正常,只是源映射在捆绑包中内联,使其超过 2MB。此外,还会生成一个源映射文件。当我手动删除内联源映射时,我的包大小下降到 ~2k。

我的问题是如何在没有内联源映射的情况下生成我的 bundle.js?

我尝试过的事情:搜索 SO、搜索Angular2 文档汇总流文档gulp-sourcemap 文档。我还没有找到任何专门解决这个问题的东西。

下面是相关的配置文件

AoT 特定的 tsconfig 文件(tsconfig-aot.json):

汇总配置(我尝试注释掉 dest 和 sourceMapFile 文件路径以查看是否会导致 gulp 关闭,但没有效果):

吞咽文件

编辑:我确实找到了一个解决方法,让 gulp 使用 CLI 执行汇总。不过,我仍然想知道我在 gulp 或 rollup 配置中做错了什么。

0 投票
2 回答
1300 浏览

javascript - 错误 1068:类型 angular 2 (AOT) 上不存在属性

我是 Angular 2 的新手,我正在制作“用户注册”表单,但它在电话号码验证中的“类型上不存在属性”中显示错误。

我在 JIT 和 AOT 中编译。

在 JIT 编译器中显示错误消息并运行我的用户注册表单它工作正常。但是当我用 AOT 编译时显示编译错误。

我正在阅读 Angular 2 表单验证官方文档,这里是链接Angular 2 表单验证

下面是我的 Html 表单和编译器输出

HTML 表单

AOT 输出

AOT 错误

提前致谢

维克拉姆

0 投票
1 回答
170 浏览

telerik - Telerik Angular2汇总问题

使用StackOverflow 问题Grid 模块中指定的 Telerik Grid 模块和汇总设置无法获取“orderBy”。GridModule、SharedModule、IntlService 等其他模块正在得到解决。

这是我命名的导出:

0 投票
1 回答
170 浏览

angular - 使用桶进行aot编译+汇总后找不到Angular 2服务

我有一个大型 angular2 应用程序 - 在 JIT 模式下完美运行。但是,在进行 AOT 编译和汇总后,应用程序不再工作。

我收到的错误是

经过调查,我发现我的桶文件是导致此问题的原因。如果我像这样导入服务:

我得到了错误。但是,如果我将导入语句更改为:

一切正常...

任何人都知道如何解决这个问题?我不想停止使用桶文件...

0 投票
2 回答
467 浏览

angular - 如何发布包以在 AoT angular2 应用程序中使用

我有一个用 angular2 typescript 编写的代码,这是一个使用服务和组件导出的模块

我想在不同的 angular2 应用程序中使用这个 MyModule,所以我用这个 tsconfig 和脚本发布了它

包.json

在使用来自angular2 种子的种子创建的其他 angular2 应用程序中,我已经安装了该软件包,尝试使用它一切正常,因为我不在 AOT 中运行该应用程序,但在 AoT 中它有错误

错误:模块“AboutModule”导入的意外值“MyModule”

我有几个问题:

  1. 我应该如何发布包/ tsconfig "module" = es2015 / systemjs / commonjs 内部有什么不同
  2. 模块发布类型是否与如何在 angular2 中使用包有关 - 即,如果我使用 systemjs 发布,我可以在 angular2 AoT 应用程序中使用这个包吗?
  3. 是否有任何最佳实践如何发布 angular2 共享模块并在 diff 应用程序中使用它?
0 投票
2 回答
776 浏览

angular - Angular 2 - 为 JIT 和 AoT 导入外部库

我正在尝试将我的代码库配置为能够同时执行 JiT 和 AoT,以便我可以将 JiT 用于本地开发,将 AoT 用于生产。我在这里遵循了角度文档,并成功地让两者单独工作。

我面临的问题是当我尝试导入外部库时,特别是 moment-js。

对于 JiT,我使用的是 SystemJS,其配置为

然后在打字稿中导入一个组件,我可以这样做

这适用于本地开发。

但是,当我尝试使用汇总进行 AoT 编译时,出现Cannot call a namespace ('moment')编译错误。我在这个线程之后解决了这个问题,所以在对汇总配置进行了几次更改之后,组件中的导入语句应该是

这对于 AoT 和汇总非常有效,但现在 SystemJS 无法理解这一点。

我似乎无法跳出循环。我可以让一个工作,但不能同时工作。有没有办法让 SystemJS 理解汇总所需的导入语句?我认为反过来是不可能的。

编辑

我确实找到了一种至少让它工作的方法,但这并不完全理想。我没有导入它,而是将其声明为any,然后使用脚本标记从外部加载到库中。所以现在组件是

正如我所说,这并不理想,因为这不允许我将 moment 与 AoT 构建捆绑在一起,并且它还强制 typescript 解释'moment' var,因为any现在它不知道它的类型。所以这仍然不能完全回答我的问题,但这至少有效。

0 投票
1 回答
1420 浏览

angular - 在 Angular 2 应用程序开始使用 AoT 之前从数据库加载配置

在加载我的 Angular 2 应用程序之前,我试图从数据库中获取一些配置选项。Angular 应用程序需要等待数据加载后才能启动,因为应根据这些配置选项限制对某些组件的访问。

所以我创建了一个 ConfigurationService 来从后端获取数据,并且我试图在启动应用程序之前使用根模块中的 app_initializer 来调用 configurationservice。我已经设法在几个月前创建的 Angular 应用程序(角度 RC4)中做到了这一点,并尝试以同样的方式做这件事。

app.module.ts - 第一次尝试

这导致了以下错误:

我认为这与我正在使用的 AoT 编译器有关。我已经用工厂替换了 lambda 表达式。

app.module.ts - 第二次尝试

配置.service.factory.ts

这实际上是使用配置服务从后端获取数据,但在启动应用程序之前不会等待承诺解决。它在用户从主页开始(每个人都可以访问)然后导航到非管理员用户限制的组件时工作。但是当用户刷新受限制的页面时,在加载配置之前会触发 OnInit(我确定用户是否有权访问)。就我而言,这导致用户被拒绝访问他们应该有权访问的页面。

配置.service.ts

组件实现

我现在完全没有想法,我一直在寻找解决方案,但只设法找到推荐 lambda 选项的人,这对我不起作用。