问题标签 [angular2-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 投票
9 回答
73282 浏览

angular - Angular 2 中的 $compile 等价物

我想手动编译一些包含指令的 HTML。$compileAngular 2中的等价物是什么?

例如,在 Angular 1 中,我可以动态编译 HTML 片段并将其附加到 DOM:

0 投票
0 回答
30 浏览

angular - 在平台之上构建 Angular2 应用程序

我正在寻找有关 Angular2 编译器的文档/指南/任何信息。我感兴趣的是在不同的框架之上使用 Angular2(让组件模板转换为平台代码而不是常规 HTML)。

从我在 Angular2 上看到的所有内容来看,这应该是可能的,这就是 Angular2 是如何构建在 ReactNative 和 NativeScript 之上的。

Angular2 站点没有关于此的任何文档。他们拥有的最接近的东西是@angular/compilerAPI——没有关于该主题的额外信息。

有人知道从哪里开始学习/研究这种东西吗?

0 投票
1 回答
1288 浏览

angular - Angular 2 离线模板编译出错 - @angular/http 没有导出的成员 HTTP_PROVIDERS

我目前在应用程序组件级别设置 HTTP_PROVIDERS。通过 ./node_modules/.bin/ngc 运行编译器时,我看到了错误。

运行编译器时的完整错误是

我在其中设置 HTTP_PROVIDERS 的应用程序组件

使用的 Compiler、Compile-cli、typescript 和 @angular/http 版本

tsconfig.json

Typings.json

如果我不包含 HTTP_PROVIDERS,则编译运行成功,没有错误。任何关于我可能需要更改以便我可以使用 HTTP_PROVIDERS 进行编译的指导都会有所帮助。

回复尝试在引导程序上添加提供程序的评论。这是我的 main.ts。我还没有弄清楚如何添加额外的提供者。这是离线编译器的基本示例。

0 投票
1 回答
1351 浏览

angular - 升级到 RC5 后,Angular2 通用错误找不到模块“@angular/compiler/src/template_parser”

我正在使用 angular2 ,webpack 和 angular universal 项目构建良好,但我在运行时收到以下错误。适用于有角 RC4

Error: Cannot find module '@angular/compiler/src/template_parser' at Function.Module._resolveFilename (module.js:339:15) at Function.Module._load (module.js:290:25) at Module.require (module.js:367:17) at require (internal/module.js:16:19) at Object.<anonymous> (/Applications/XAMPP/xamppfiles/htdocs/connecthealth/web-app/node_modules/angular2-universal/dist/node/platform/node.js:25:25) at Module._compile (module.js:413:34) at Object.Module._extensions..js (module.js:422:10) at Module.load (module.js:357:32) at Function.Module._load (module.js:314:12) at Module.require (module.js:367:17)

0 投票
16 回答
176538 浏览

angular - 如何使用/创建动态模板来使用 Angular 2.0 编译动态组件?

我想动态创建一个模板。这应该用于ComponentType在运行时构建 a 并将其放置(甚至替换)托管组件内部的某个位置。

直到我使用 RC4 ComponentResolver,但使用 RC5 我收到以下消息:

我找到了这个文档(Angular 2 Synchronous Dynamic Component Creation

并了解我可以使用

  • 那种动态ngIfComponentFactoryResolver。如果我在内部传递已知组件@Component({entryComponents: [comp1, comp2], ...})- 我可以使用.resolveComponentFactory(componentToRender);
  • 真正的运行时编译,Compiler...

但问题是如何使用它Compiler?上面的注释说我应该打电话:Compiler.compileComponentSync/Async- 那怎么办?

例如。我想为一种设置创建(基于一些配置条件)这种模板

在另一种情况下,这个string-editor替换为text-editor

依此类推(不同的数字/日期/editors属性类型的引用,为某些用户跳过了一些属性......)。即这是一个示例,实际配置可能会生成更多不同和复杂的模板。

模板正在更改,因此我无法使用ComponentFactoryResolver和传递现有模板...我需要一个带有Compiler.

0 投票
0 回答
1289 浏览

angular - Angular2 RC5 使用正确的模块动态编译组件

我正在尝试使用 angular2编译器动态插入一个组件,只要所有代码都在默认模块中,它就可以正常工作。

但是如果尝试将组件放入它自己的功能模块中,它就会中断。注入的编译器实例(ModuleBoundCompiler)绑定到默认模块而不是功能之一,我无法在编译器调用中覆盖该模块,因为由于循环依赖(功能模块导出组件),我无法获得对它的引用, 组件需要引用功能模块)。

知道这是一个错误还是我做错了什么?

默认模块:

应用组件:

功能模块

特征组件

0 投票
0 回答
121 浏览

javascript - 在Angular2中同一类的两个根组件上调用Bootstrap()?

我发现当bootstrap()被调用时,它会将一个类实例与 DOM 上的选择器匹配并插入一个影子 DOM。

因此,为了尝试引导同一类的两个根组件,我在每个组件上都指定了一个不同的“选择器”

但是,虽然每个组件都使用不同的“选择器”进行引导,但如果我查看每个组件的注释元数据,它们都指向相同的 '_hostElement.nativeElement'

前任:

以下打印显示'_hostElement.nativeElement'的注释元。

对于以下类声明:

这就是我引导每个实例的方式,以便它们具有不同的选择器:

上面的引导函数返回一个 Promise,这对于两个实例都是成功的,这与人们所期望的相反。

当我检查 DOM 时,我可以看到有两个不同的“选择器”标签可以按预期标识根应用程序,但如下图所示 - 引导组件'ComponentRef_'指向相同的 '_hostElement.nativeElement'

[这里是引导调用的 'ComponentRef_' - 两个调用都返回相同的 ComponentRef_ ][1]

如何让同一类的两个根组件很好地发挥作用?

0 投票
4 回答
4648 浏览

angular - Angular 2 RC 6 AoT 编译器不工作

我刚刚将我的项目更新到 Angular 2 RC 6。我现在正在尝试使用博客文章http://angularjs.blogspot.com/中提到的提前 (AoT) 编译,但没有成功。

我在 ASP.Net 中构建项目时没有使用 angular cli。

正如博客文章所暗示的,我已经安装了@angular/compiler-cli

但是当我尝试从命令提示符运行 ngc 时,它给出了错误

谁能指导如何在 ASP.Net 项目中使用 AoT 编译器。或者当您不使用 Angular CLI 而是手动构建组件等时。

编辑

我现在设法通过首先移动到./node_modules/.bin/然后运行来运行 ngc

但是现在编译器抛出以下错误:

当我尝试使用 ngc 编译我的项目时,它会引发以下错误:

在我的应用程序模块中,我有以下提供程序,这可能是导致该项目的原因。我不确定这到底有什么问题?

0 投票
0 回答
257 浏览

angular - 删除 angular2 中的 compileComponentsAsync

随着 Angular2 RC6 的发布,他们删除了 compileComponentsAsync

并用 compileModuleSync 替换它(基本上只引用模块)现在这是否意味着我必须为我希望在运行时呈现的每个组件创建一个模块?或者我可以引用模块并只渲染我想要的组件吗?

以下是声明

“核心:以前不推荐使用的 @Component.directives 和 @Component.pipes 支持已被删除。

现在所有的组件和管道都必须通过 NgModule 来声明。NgModule 是通过 Compiler#compileModuleSync 或 #compileModuleAsync 传递给 Angular 编译器的基本编译块。”由于这一变化,Compiler#compileComponentAsync 和 #compileComponentSync 也被删除了——任何进行编译的代码都应该使用上面提到的 API 来编译模块.

最后,由于模块是基本的编译单元,ngUpgrade 模块被修改为始终需要将 NgModule 传递给 UpgradeAdapter 的构造函数——以前这是可选的。”

0 投票
1 回答
1354 浏览

angular - Angular2没有CompileMetadataResolver的提供者

所以我已经从 RC1 升级到了 Angular2 的最终版本。我做了很多调整,但每次我注入RuntimeCompiler我的AppComponent,都会发生这个错误。

CompileMetadataResolver 没有提供程序

我不知道这里发生了什么,也没有看到网上关于这个问题的答案。任何帮助将不胜感激,无论如何这里是我的 AppComponent 供参考。

先感谢您。