问题标签 [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.

0 投票
1 回答
972 浏览

angular - 带有混合应用程序 ng-build 的 Angular CLI

我目前正在使用 Angular CLI 将 AngularJS 应用程序升级为 Angular 应用程序。

我的问题是,当我使用 构建应用程序时ng build,它会将所有文件复制到dist文件夹中,但会忽略所有 AngularJS 文件。对于所有 js 文件,我的解决方案是将它们添加scriptsangular-cli.json. 现在,我只需要处理 html 文件。对于 Angular 应用程序,Angular cli 会自动为我处理它们,但 AngularJS 将保留在dist文件夹之外。我想出的一个解决方案是将它们添加到assets数组中。所以基本上我有两个问题:

  1. 有没有一种方法可以告诉 angular cli.html从某个文件夹构建所有文件?类似的东西:"assets": [ "app/ng1/.*html" ]

  2. 这是最佳实践吗?还是有更好的方法来实现我想要的?

谢谢!

0 投票
0 回答
440 浏览

angularjs - 错误:未找到未定义的组件工厂。你把它添加到@NgModule.entryComponents 了吗?

我正在尝试使用 UpgradeModule 与 Angular 组件共享自定义 angularjs 服务,并遵循 Angular 文档中的模式。我包括我的“工作” plunker 代码的路径。我已经在 app.ts 文件中删除了破坏应用程序的代码,以便我们可以看到混合应用程序工作,直到我尝试与 angular 共享服务。我认为这是在抱怨我尝试使用组件工厂方法注入服务。

angularJS / angular hybrid plunk 这里是我的 plunk 的链接。请帮忙。

0 投票
0 回答
511 浏览

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:

0 投票
3 回答
3378 浏览

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 问题的链接

堆栈跟踪:

0 投票
0 回答
1361 浏览

angular - 使用 Angular 升级组件

我正在尝试使用UpgradeComponent以便在我的 Angular 4 应用程序中使用 Angular 1 库( ui-grid )。

我的步骤:

  1. 创建一个新指令:

    /li>
  2. 将其添加到我的模块

    /li>
  3. 尝试在我的 index.html 中导入它

    /li>
  4. 得到这个错误:

第 3 步之前:

第 3 步之后:

在此处输入图像描述

知道如何在我的 Angular 4 应用程序中使用这个 AngularJS 库吗?

0 投票
1 回答
634 浏览

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 文件);虽然我通常喜欢避免做这些事情,但这似乎是迄今为止最安全的选择。

0 投票
1 回答
178 浏览

angular - AngularJS 升级到 Angular

目前,我们有一个使用 Angular JS 1.4 版本的应用程序构建。我们想分阶段将它升级到 Angular 4。首先,我们想将其升级到 Angular JS 1.5 版本以启用组件 API。接下来,我们想在 Angular 4 版本中实现新的需求。我的问题是:

在引导 Angular 4 之前,我们是否需要将所有控制器、指令升级到 1.5 组件结构?或者只有特定的控制器/指令将与 Angular 4 组件一起使用?

对此有什么建议吗?

0 投票
1 回答
187 浏览

angularjs - Angular 2+ 对 angularJs 的服务

我正在尝试转换 Angular 2+ 服务并在 angularJs 项目中使用它。

应用程序/users.service.ts

然后我用 rollup 把它转换成 js

我添加 downgradeInjectable 将 angular2+ 服务转换为 angularJs

接下来我尝试在angularJs中加载它

我错过了一些东西,因为它不起作用:/

我找不到资源来做这件事,所有人都试图将 ng1 服务转换为 ng2,但不是相反。

有人可以帮忙吗?

谢谢

0 投票
0 回答
536 浏览

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] 应用程序已使用此元素引导

任何帮助将不胜感激,谢谢!

0 投票
1 回答
758 浏览

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 中存在的现有页面..?两个版本可以在同一个项目中共存吗...?如何做到这一点..?