问题标签 [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.
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 模式下不工作,并生成以下错误:
问题:
我无法知道哪个模块导致了这个错误。
NgBootstrao NgbModel
经过多次调试,加载时出现错误。如何修复此错误?是否有一些配置设置可用于查看SystemJS在浏览器控制台中加载的模块的进度/日志?
NgBootstrap 的 SystemJS 映射:
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)
angular - 使用 AoT 预编译的组件工厂进行 JiT 编译
我有一个来自后端的随机标记,应该在运行时使用 JiT 编译。此标记中使用的每个组件都已使用 AoT 预编译(添加到 entryComponents 块),因此在运行时具有组件工厂。当 JiT 编译提供的标记时,它会忽略现有的组件工厂并重新编译每个内部组件。
有什么方法可以将组件的 AoT 预编译工厂提供给 JiT 编译器,以仅使用动态模板编译一个动态组件?
应该编译的标记看起来像这样
任意嵌套(常规标记可以包含 1500-2000 个 DOM 节点)
ps 我正在使用这种方式通过 AoT 获取 JiT https://github.com/angular/angular/issues/15510#issuecomment-294301758然后就
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
angular - Angular - 动态组件 - 编译器问题 - 内存泄漏?
我正在尝试创建一个动态组件。这是 plunker 中的示例。http://embed.plnkr.co/EVFglgkp24hkRkpxrEGe/ 一切正常,但存在内存泄漏。
这是 github 票https://github.com/angular/angular/issues/19997
动态创建的组件正在被销毁,但创建动态组件的组件并没有被销毁。换句话说,编译动态组件的组件没有被破坏。
在上面的示例中,如果我们在“主页”和“动态页面”之间来回导航并在 chrome 中拍摄内存快照,您可以看到假设被销毁的组件仍然存在,如下图所示。
出于测试目的,我什至尝试评论以下行,但问题仍然存在。
我打电话的那一刻
this.compiler.compileModuleAsync
创建者组件根本没有被破坏。在那之前没有问题。
你能请人帮忙吗?先感谢您。
angular - 从 Angular 5 组件中读取 TypeDecorator
以前,我可以使用 Reflect 元数据获取组件的元数据。现在元数据已移动到附加到组件的一些注释中。
像这样读取元数据
绝对是一个黑客。从组件中读取此类元数据的正确方法是什么?我想在@Component
装饰器中获取附加到组件的数据。
angular - Angular 4:添加 Angular 材料时 d.ts 文件的 Cli 编译器问题
我已经通过安装 npm install @angular/material 和 npm install @angular/cdk 添加到我的项目角度材料中,现在当我编译我的应用程序时,我收到了 .d.ts 文件错误。
我检查了我的 tsconfig.json 文件
tsconfig.app.json
错误:
angular - 递归路由导致最大堆栈超出错误
我PageModule
在它的路由中有一个 which 引用本身。如果我删除循环依赖项,启动应用程序然后再次添加它,它会起作用。但如果我停止服务器并使用已经存在的循环依赖项再次启动它,则不会。我该如何解决这个问题?
我有这个路由器模块:
然后将其导入 PageModule:
显然,这应该是固定的,如此处所示,但我已经升级到最新的 cli 版本,1.5.0
但问题仍然存在。
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 文件夹导入,我从本地包文件导入),那么一切正常。
如果有人想尝试我所做的,这里是重现步骤:
- git clone git@github.com:Orodan/ng-selector.git
- cd ng-选择器
- git checkout 开发
- npm 安装
- npm run build-tsc 或 npm run build-ngc 根据您要测试的编译
- cd ngSelectorDemo
- npm 安装
- npm 开始
我想我的编译设置做错了,但我找不到到底是什么。所以如果有人能帮忙
谢谢您的帮助 :)
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
,我还有另一个错误:
现在我可以包含IonicModule
下MyModuleB
一个illegal state error
(这次链接到翻译模块),但我根本没有使用这些模块,MyModuleB
为什么我需要全部导入它们?