问题标签 [ng-upgrade]
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 - 带有混合应用程序 ng-build 的 Angular CLI
我目前正在使用 Angular CLI 将 AngularJS 应用程序升级为 Angular 应用程序。
我的问题是,当我使用 构建应用程序时ng build
,它会将所有文件复制到dist
文件夹中,但会忽略所有 AngularJS 文件。对于所有 js 文件,我的解决方案是将它们添加scripts
到angular-cli.json
. 现在,我只需要处理 html 文件。对于 Angular 应用程序,Angular cli 会自动为我处理它们,但 AngularJS 将保留在dist
文件夹之外。我想出的一个解决方案是将它们添加到assets
数组中。所以基本上我有两个问题:
有没有一种方法可以告诉 angular cli
.html
从某个文件夹构建所有文件?类似的东西:"assets": [ "app/ng1/.*html" ]
这是最佳实践吗?还是有更好的方法来实现我想要的?
谢谢!
angularjs - 错误:未找到未定义的组件工厂。你把它添加到@NgModule.entryComponents 了吗?
我正在尝试使用 UpgradeModule 与 Angular 组件共享自定义 angularjs 服务,并遵循 Angular 文档中的模式。我包括我的“工作” plunker 代码的路径。我已经在 app.ts 文件中删除了破坏应用程序的代码,以便我们可以看到混合应用程序工作,直到我尝试与 angular 共享服务。我认为这是在抱怨我尝试使用组件工厂方法注入服务。
angularJS / angular hybrid plunk 这里是我的 plunk 的链接。请帮忙。
angular - 混合应用程序中的 Angular 4 AOT 编译
目前,我正在使用升级模块将 AngularJS 应用程序升级到 Angular 4。使用我们当前的 webpack 配置,它在开发和生产中都可以正常工作。
当我通过添加aot编译时@ngtools/webpack
,我摆脱了所有编译错误,但是有一个运行时错误:
Error: [$injector:strictdi] r is not using explicit annotation and cannot be invoked in strict mode
.
不过,这应该不是问题,因为我使用的是babel-plugin-angularjs-annotate
. 它仅在我添加@ngtools/webpack
加载程序时发生;否则它工作正常。
这是 webpack 配置的相关部分:
稍后我还添加了 aot 插件,但这不是导致问题的原因。
这是整个 .babelrc:
angularjs - Angular NgUpgrade 将 AngularJS 服务注入 Angular 服务;获取:未处理的承诺拒绝:无法读取未定义的属性“获取”;区:
我在这里看到很多类似的问题,但还没有找到有效的解决方案。我认为正在发生的事情是,因为我们的 Ng2App 首先被引导,它还没有对 $injector 的引用,所以当我尝试在我的提供程序声明中使用它时(deps: ['$injector']),它没有'不存在。
非常奇怪的是,我可以在 Angular COMPONENT 中使用此服务,但由于某种原因不能在 Angular SERVICE 中使用它。
应用程序.js
ng2app.module.ts:
后来......在服务中(失败):
后来......在一个组件中(正常工作):
有谁知道为什么会发生这种情况以及如何解决?
AngularJS 版本:1.5.8
Angular/core 等版本:4.2.4
这是我在 Angular 存储库中打开的 Github 问题的链接
堆栈跟踪:
angular - 使用 Angular 升级组件
我正在尝试使用UpgradeComponent以便在我的 Angular 4 应用程序中使用 Angular 1 库( ui-grid )。
我的步骤:
创建一个新指令:
/li>将其添加到我的模块
/li>尝试在我的 index.html 中导入它
/li>得到这个错误:
第 3 步之前:
第 3 步之后:
知道如何在我的 Angular 4 应用程序中使用这个 AngularJS 库吗?
angularjs - 是否有任何替代 ngUpgrade 可以并行运行 angular 和 angularjs,或者选择退出 ngUpgrade 的 $digest 触发器的方法?
我有一个相当大的 angular.js 1.6 应用程序,我想迁移到 Angular,但是使用 ngUpgrade 会导致太多的 $digests 被触发(即每次Zone.onMicrotaskEmpty
被触发)。不幸的是,我正在迁移的应用程序在性能方面已经不是太好了,所以每增加一个 $digest 都是一件大事。虽然我可以用 来缓解这种情况ngZone.runOutsideAngular()
,但我真正想要的是完全禁用升级模块中 $digests 的自动触发,并在必要时手动触发它们;由于该应用程序由粗粒度组件组成,我将逐一迁移,因此几乎不需要更改 Angular 来触发 angular.js 中的 $digest。
以下是我正在考虑的一些可能的解决方案;他们中的任何一个是否比其他人更“标准”(或风险/错误倾向更小)?
- 使用本地修改版本的 ngUpgrade 并调用已
rootScope.$digest()
删除 - 在 iframe 中托管升级的 Angular 组件并
postMessage()
用于与应用程序交互 - 在 Web 组件中托管升级的 Angular 组件(尚未研究在这种情况下通信将如何工作)
- 从同一个文档中引导 angular.js 和 Angular 应用程序,让它们都在页面上处理自己的指令/组件
更新(8/23):现在我正在尝试选项 1(本地修改升级 js 文件);虽然我通常喜欢避免做这些事情,但这似乎是迄今为止最安全的选择。
angular - AngularJS 升级到 Angular
目前,我们有一个使用 Angular JS 1.4 版本的应用程序构建。我们想分阶段将它升级到 Angular 4。首先,我们想将其升级到 Angular JS 1.5 版本以启用组件 API。接下来,我们想在 Angular 4 版本中实现新的需求。我的问题是:
在引导 Angular 4 之前,我们是否需要将所有控制器、指令升级到 1.5 组件结构?或者只有特定的控制器/指令将与 Angular 4 组件一起使用?
对此有什么建议吗?
angularjs - Angular 2+ 对 angularJs 的服务
我正在尝试转换 Angular 2+ 服务并在 angularJs 项目中使用它。
应用程序/users.service.ts
然后我用 rollup 把它转换成 js
我添加 downgradeInjectable 将 angular2+ 服务转换为 angularJs
接下来我尝试在angularJs中加载它
我错过了一些东西,因为它不起作用:/
我找不到资源来做这件事,所有人都试图将 ng1 服务转换为 ng2,但不是相反。
有人可以帮忙吗?
谢谢
angularjs - 使用 NgUpgrade 在 Angular Hybrid 应用程序中加载多个 AngularJS 模块
我有一个功能齐全的大型 AngularJS/Angular 4 混合应用程序。自从这个项目开始以来,我只有一个 AngularJS 模块和一个 Angular 4 模块。随着时间的推移,Angular 4 部分开始越来越多,我决定开始使用 NgModules 来更好地组织代码并最终使用延迟加载。当应用程序处于混合模式时,我还想将 AngularJS 模块重构为几个模块并从我的 Angular 4 模块中加载它们。
我目前正在引导应用程序,如下所示,它工作正常。但是假设我添加了一个名为 Ng1AppModuleTwo 的 AngularJS 模块,我只想在延迟加载一个名为 Ng4AppModuleTwo 的 Angular 4 模块时加载它,我该如何实现呢?
我到处搜索示例,所有混合应用程序的示例都只有一个 AngularJS 模块。我尝试了以下代码来尝试加载第二个 AngularJS 模块,但我收到 Angular 错误消息:
未处理的 Promise 拒绝:[ng:btstrpd] 应用程序已使用此元素引导
任何帮助将不胜感激,谢谢!
angularjs - Angular 4 和 Angular JS 1x 的共存
我们目前正在使用 Angular JS 1.6。我们的架构层如下,HTML 页面,控制器(MVC 控制器),服务(为服务端 API 保存 $resource),状态(为功能保存状态) * 功能是 HTML 页面的集合。我们计划迁移到 Angular 4.0。Angular JS 1.6 中的退出项目有大量页面需要重新设计。是否可以在 Angular 4.0 中开发新页面并重用 Angular Js 1.6 中存在的现有页面..?两个版本可以在同一个项目中共存吗...?如何做到这一点..?