问题标签 [angular-compiler]

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 投票
0 回答
813 浏览

angular - SystemJS Error with Angular AOT: Uncaught (in promise): TypeError: ctor is not a constructor

我在应用程序中使用Angular 4.4.1 + SystemJS 0.20.19 + NgBootstrap 1.0.0-beta.5。该应用程序按照此说明在Angular JIT模式下工作并具有以下SystemJS配置

meta: { "./*": { "esModule": true } }

我使用“node_modules/.bin/ngc”-p tsconfig-aot.json将应用程序编译为AOT应用程序。

AOT应用程序中,我有SystemJS map配置,如本问题末尾所示。

在 JIT 模式下工作的同一应用程序在 AOT 模式下不工作,并生成以下错误:

问题:

  1. 我无法知道哪个模块导致了这个错误。NgBootstrao NgbModel经过多次调试,加载时出现错误。如何修复此错误?

  2. 是否有一些配置设置可用于查看SystemJS在浏览器控制台中加载的模块的进度/日志?

NgBootstrap 的 SystemJS 映射:

0 投票
3 回答
8484 浏览

angular - 无法读取 null 的属性“配置”

我是angular2的新手。我已经下载了 angular 2 项目并尝试设置。我安装了 angular cli 1.0.0-rc.2,当我在做 ng serve 时,它​​显示以下错误:

无法读取空类型错误的属性“配置”:无法在 Class.run (D:\Sumit\AgulaNew\admin\node_modules\@angular\cli\tasks\serve.js:22:63) 处读取空属性“配置” check_port_1.checkPort.then.port (D:\Sumit\AgulaNew\admin\node_modules\@angular\cli\commands\serve.js:103:26) at process._tickCallback (internal/process/next_tick.js:188: 7)

0 投票
0 回答
287 浏览

angular - 使用 AoT 预编译的组件工厂进行 JiT 编译

我有一个来自后端的随机标记,应该在运行时使用 JiT 编译。此标记中使用的每个组件都已使用 AoT 预编译(添加到 entryComponents 块),因此在运行时具有组件工厂。当 JiT 编译提供的标记时,它会忽略现有的组件工厂并重新编译每个内部组件。
有什么方法可以将组件的 AoT 预编译工厂提供给 JiT 编译器,以仅使用动态模板编译一个动态组件?

应该编译的标记看起来像这样

任意嵌套(常规标记可以包含 1500-2000 个 DOM 节点)

ps 我正在使用这种方式通过 AoT 获取 JiT https://github.com/angular/angular/issues/15510#issuecomment-294301758然后就

0 投票
2 回答
3286 浏览

angular - AOT 编译器 - 包括延迟加载的外部模块

我正在尝试将外部模块(托管在 git/npm 存储库中)作为延迟加载模块包含在我的 Angular 应用程序中。

我正在使用 ngc 编译器编译我的外部模块:

node_modules/.bin/ngc -p tsconfig-aot.json

这是我的编译器配置的样子:

在我的主应用程序中,我正在延迟加载给定的模块:

出于编译目的,我使用 @ngtools/webpack 插件。

JIT 编译没有任何问题,但是 AOT 编译给了我错误:

所以我决定检查ngc编译器的输出是什么(由 webpack 插件在后台调用):

node_modules/.bin/ngc -p tsconfig.server.aot.json

实际上,/path/to/my/project/angular-universal-serverless/src/ngfactory/node_modules目录中缺少我的模块。

如何强制 ngc 将给定模块放在ngfactory输出目录中?

我的主要应用程序可以在这里找到:https ://github.com/maciejtreder/angular-universal-serverless/tree/externalModule

和这里的外部模块:https ://github.com/maciejtreder/angular-external-module

0 投票
1 回答
1139 浏览

angular - Angular - 动态组件 - 编译器问题 - 内存泄漏?

我正在尝试创建一个动态组件。是 plunker 中的示例。http://embed.plnkr.co/EVFglgkp24hkRkpxrEGe/ 一切正常,但存在内存泄漏。

是 github 票https://github.com/angular/angular/issues/19997

动态创建的组件正在被销毁,但创建动态组件的组件并没有被销毁。换句话说,编译动态组件的组件没有被破坏

在上面的示例中,如果我们在“主页”和“动态页面”之间来回导航并在 chrome 中拍摄内存快照,您可以看到假设被销毁的组件仍然存在,如下图所示。

在此处输入图像描述

出于测试目的,我什至尝试评论以下行,但问题仍然存在。

我打电话的那一刻

this.compiler.compileModuleAsync

创建者组件根本没有被破坏。在那之前没有问题。

你能请人帮忙吗?先感谢您。

0 投票
1 回答
337 浏览

angular - 从 Angular 5 组件中读取 TypeDecorator

以前,我可以使用 Reflect 元数据获取组件的元数据。现在元数据已移动到附加到组件的一些注释中。

像这样读取元数据

绝对是一个黑客。从组件中读取此类元数据的正确方法是什么?我想在@Component装饰器中获取附加到组件的数据。

0 投票
1 回答
672 浏览

angular - Angular 4:添加 Angular 材料时 d.ts 文件的 Cli 编译器问题

我已经通过安装 npm install @angular/material 和 npm install @angular/cdk 添加到我的项目角度材料中,现在当我编译我的应用程序时,我收到了 .d.ts 文件错误。

我检查了我的 tsconfig.json 文件

tsconfig.app.json

错误:

0 投票
1 回答
190 浏览

angular - 递归路由导致最大堆栈超出错误

PageModule在它的路由中有一个 which 引用本身。如果我删除循环依赖项,启动应用程序然后再次添加它,它会起作用。但如果我停止服务器并使用已经存在的循环依赖项再次启动它,则不会。我该如何解决这个问题?

我有这个路由器模块:

然后将其导入 PageModule:

显然,这应该是固定的,如此处所示但我已经升级到最新的 cli 版本,1.5.0但问题仍然存在。

0 投票
1 回答
125 浏览

angular - 编译的 Angular 5 文件在运行时触发错误“没有名称的表单控件的值访问器:”

我正在尝试将包(ng-selector)从角度 4 更新到 5,但我无法让它正常工作。

据我了解,由于 Angular 5 仅从应用程序文件夹编译文件,要使用 node_modules 文件夹中的包,我的包需要公开 js 文件。

为了在我的包中公开 js 文件(到目前为止只公开了 ts 文件),我尝试了 tsc 和 ngc。这是问题所在:无论我使用什么编译器,我都不会收到编译错误。但是当我从 js 文件中导入我的包并尝试使用它时,我的控制台上总是会出现错误消息:

我知道在大多数情况下,此错误来自以下错误之一:

  • 我忘了包括 FormsModule
  • 我没有正确实现 ControlValueAccessor
  • 我没有使用提供者 NG_VALUE_ACCESSOR

我省去了你检查的麻烦,这里不是这样。我的包在 Angular 4 上运行良好。

这是我的打字稿文件的编译问题,因为如果我将包文件直接放入我的应用程序文件夹,更改导入(而不是从 node_modules 文件夹导入,我从本地包文件导入),那么一切正常。

如果有人想尝试我所做的,这里是重现步骤:

  1. git clone git@github.com:Orodan/ng-selector.git
  2. cd ng-选择器
  3. git checkout 开发
  4. npm 安装
  5. npm run build-tsc 或 npm run build-ngc 根据您要测试的编译
  6. cd ngSelectorDemo
  7. npm 安装
  8. npm 开始

我想我的编译设置做错了,但我找不到到底是什么。所以如果有人能帮忙

谢谢您的帮助 :)

0 投票
1 回答
1042 浏览

angular - 非法状态:无法加载指令 NgClass 的摘要

在我的模块上运行ngc时,它曾经使用 angular 4.4.3(和编译器 4.4.3)正常工作。现在我升级到 5.0.0(角度和编译器),我有以下错误:

错误:非法状态:无法在 [...]/node_modules/@angular/common/common.d.ts 中加载指令 NgClass 的摘要。

我的 tsconfig.json 文件如下所示:

我不知道是什么可能导致我试图编译的文件出现问题。我在这里和那里看到过类似的错误,但与公共模块没有直接关系。很难发布示例来重现错误,因为它不会在其他模块上发生

编辑1:

我的设置如下:一个MyModuleA成功构建的模块,MyModuleB一个MyModuleA未构建的模块。

如果我包含CommonModule在 中MyModuleB,我还有另一个错误:

现在我可以包含IonicModuleMyModuleB一个illegal state error(这次链接到翻译模块),但我根本没有使用这些模块,MyModuleB为什么我需要全部导入它们?