问题标签 [angular-ivy]
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 - Angular ivy 中的 renderComponent 带有额外的组件/指令声明
这是在 ivy 中渲染动态惰性组件的示例:
如果我们需要在中使用额外的组件/指令,我该怎么办lazy.component
?
angular-ivy - Angular 8 - Building with IVY - how to interpret the error messages
Currently I am moving an Angular 7 project (monorepo using NX) with libs (mostly without npm packaging) to Angular 8 and - after running a successful build - would like to activate IVY for the build.
The errors written out to the console
Question - what do these errors indicate?
angular - 使用 Angular 编译(Ivy)和构建(Bazel)
我是 Angular 的新手,我试图了解 Angular 9 的新功能。我知道 Ivy 是新的视图引擎,它编译我们的代码,Bazel 构建它,但 Bazel 也编译它吗?还是 Ivy 做的,然后 Bazel 做构建?我对此感到困惑,Bazel是否也发生在AOT期间?
javascript - 升级到 Angular v9 并启用 Ivy 后,Angular 编译失败
我们最近将 Angular 应用程序升级到了最新版本的 Angular(Angular v9)。我们所有的依赖项也都升级了,“ng update”表示我们所有的依赖项都是“有序的”。
当我们在启用 Ivy 的情况下构建应用程序时,编译过程会失败并出现大量错误,这是我们以前从未遇到过的:
有些错误很奇怪,说你不能绑定'ngClass'或'ngModel',因为它不是'div'的已知属性。它似乎缺少一些主要模块。
例如:
或者它无法识别某些组件,例如:
错误主要有两种:
- 无法绑定到 [some-property],因为它不是 [some-element] 的已知属性。属性可以是角度属性(ngClass,ngModel)或我们组件上的自定义属性。
- [some-component] 不是已知元素(同样,我们的自定义组件和角度组件都会出现这种情况)
如果我们禁用“Ivy”,一切正常,代码编译并运行顺利。
我们想开始使用 Ivy,所以我们正在寻找关于这些错误的解释以及如何修复它们。
谢谢!
angular - 在角常春藤的选择中是否可能没有预选条目
在我的 Angular 应用程序中,我使用选择控件让用户在 *ngFor 循环中填充选项。对于第一次调用(或直到用户设置实际值),选择为空,一旦做出选择,他们可以更改值但不能将其设置回“空”。这就是它的设计和工作方式,直到 angular 8。
直到 ng 8 我的代码看起来像这样,只要 someValue 为空,选择控件中就没有预选条目:
与 ivy<select [value]=...>
一起使用<option *ngFor=...>
(请参阅https://angular.io/guide/ivy-compatibility-examples#select-value-binding),但那里提出的解决方案总是选择第一个条目,即使 someData 为空. 这有两个缺点:1. 显示意味着选择了第一个条目,这是不正确的;2. 要实际选择第一个条目(并保存选择以供后端使用),用户现在必须先选择第二个条目然后选择第一个条目。
修改后的代码(如 angular guilde 中所建议)如下所示:
一种解决方法是将 emty 字符串添加到选项数组,但这使用户能够完全删除他们的选择。
有没有办法在常春藤中进行空预选的选择?
angular - 通过将 tha 模块路径作为字符串导入来加载 angular ivy 库组件
到目前为止,我正在使用 Ivy 最新的 rc 候选人。
用例:我想提供几个模块,这些模块可以通过运行时的 import 语句单独编译,而不使用路由器模块中的 loadchildren。
上下文:我通过“ng generate library nodes”创建了一个名为 nodes 的库。“ng build nodes”在 dist 下生成所需的包等。到目前为止没有什么特别的。
在我的应用程序中,我想按如下方式实例化 NodesComponent:
const modulePath = '/Users/modules/nodes/nodes.umd.js'; 返回等待导入(模块路径)。然后(...)
这不起作用,因为 Ivy 编译器不知何故无法识别要按需加载的模块。
打电话时
import('/Users/modules/nodes/nodes.umd.js').then(...) 它按预期工作。
问题:
是否可以在不指定 modulePath @compile time 的情况下使用 import 从某个位置加载任意模块文件?
Ivy 应该可以从任何位置延迟加载模块,而无需在编译时指定它们。
angular - 在启用 Ivy 的情况下构建 monorepo Angular9 库是不是一个坏主意
默认情况下,在创建 Angular9(当前为 RC)库时,该库是在生产模式下禁用 Ivy 的情况下构建的。这是有道理的,因为(还)不支持发布为 Ivy 编译的库。
然而,就我而言,我有一个 monorepo 项目,我们使用库来组织我们的代码。这些库永远不会推送到 NPM,仅用于在多步骤构建过程中构建主应用程序。在禁用 Ivy 的情况下构建库意味着主应用程序构建首先必须遍历所有这些库并调用 NGCC 来生成代码的 Ivy 版本,这看起来非常低效而且很奇怪。
问题是:只为这些库的生产版本启用 Ivy 是不是一个坏主意?如果是这样,为什么?可能会出现哪些潜在问题?
angular - 从角度 8 迁移到 9 失败 - 缺少 @Injectable 和不完整的提供程序定义迁移步骤
尝试将我的 Angular 项目从 8 升级到 9 时,出现以下错误:
我不知道这个错误是什么意思以及在哪里解决这个错误。我所有的服务/解析器/等都有一个 Injectable 装饰器,我不明白为什么会失败。有没有人遇到过这个错误?
包.json:
angular - ng.getComponent($0) 返回 null,Angular9
我正在尝试在 Angular9 默认应用程序中使用新的 Ivy 进行调试。
$0
给这个:<img _ngcontent-rmb-c11="" width="40" alt="Angular Logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9I==">
而是cmp = ng.getComponent($0)
给予null
。我在这里想念什么。
请帮忙。
angular - 如何将 MatButton 添加到 Angular 库中(Angular 9)
我使用命令在一个新的 angular 9 项目上生成了一个库
ng g 库多选
现在我想添加 Angular Material 的 MatButton,所以我在库的主模块中添加了“MatButtonModule”。我还在库的 package.json 中添加了 "@angular/material": "^9.0.0" 作为依赖项,并将其列入了 ng-package.json 的白名单。当我尝试构建库时(ng build multi-select)它说
这就是多选模块的外观
不用说,如果没有这个模块,库就可以很好地构建。这似乎是什么问题?