问题标签 [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.
javascript - 在 angular / angularjs 混合应用程序中将 downgradeModule 与 downgradeInjectable 结合使用会导致错误
使用 Angular 5.0,升级模块现在可以选择使用 downgradeModule,它在 angular 区域之外运行 angularjs。在对此进行试验时,我遇到了使用 downgradeInjectable 的问题。
我收到错误:
未捕获的错误:在引导 Angular 模块之前尝试获取 Angular 注入器。
在 Angular js 中引导 Angular 工作正常
然而...
由于在初始化 angularjs 之后进行引导,我无法再让降级注入工作。
服务要降级
降级注射尝试
当“downgradeInjectable(MyService) 运行时,角度注入器尚不可用,因为角度尚未被引导。因此错误:
未捕获的错误:在引导 Angular 模块之前尝试获取 Angular 注入器。
有谁知道我该如何解决这个问题?
angularjs - 导入 UpgradeAdapter 以升级到 Angular 4 时出错(导入声明只能在命名空间或模块中使用)
我开始将 AngularJS 应用程序升级到 Angular 4,我正在尝试使用(应用程序的“入口”文件)中这样的升级适配器来引导它——函数在一个闭包中,在一个独立的app.ts 文件:
app.ts(以前是 App.js):
初始导入 UpgradeAdapter 时出现错误:
我需要做什么?我是否以某种方式使其可用于“portalHomeApp”模块,或者我现在只是需要一个命名空间,因为我正在使用 TypeScript?
angular - 无法解析应用模块的参数
我正在尝试运行角度为 1.6 和 5 的混合应用程序。手动引导有效。一旦我尝试引导混合应用程序,就会收到以下错误:
compiler.js?7e34:466 Uncaught Error: Can't resolve all parameters for AppModule: (?). 在 CompileMetadataResolver._getDependenciesMetadata 处的 syntaxError (eval at (app.bundle.js:1852), :684:34) 在 CompileMetadataResolver._getTypeMetadata (eval at ( app.bundle.js:1852), :15600:26) 在 CompileMetadataResolver.getNgModuleMetadata (eval at (app.bundle.js:1852), :15399:24) at JitCompiler._loadModules (eval at (app.bundle.js: 1852), :33760:87) 在 JitCompiler._compileModuleAndComponents (eval at (app.bundle.js:1852), :33721:36) 在 JitCompiler.compileModuleAsync (eval at (app.bundle.js:1852), :33637: 37) 在 CompilerImpl.compileModuleAsync (eval at (app.bundle.js:1864), :245:49) 在 PlatformRef.bootstrapModule (eval at (app.bundle.js:229), :5646:
应用程序.ts
platformBrowserDynamic().bootstrapModule(AppModule);
app.module.ts
tsconfig.json
我正在使用 webpack。这是我的配置的一部分:
angularjs - 翻译指令在角度不起作用
我目前正在开发一个角度混合应用程序(angular + angularJs)。该应用程序使用 angular-gettext 和 ngx-translate 进行翻译。两者都在自己的运行时工作,但是当我将 Angular 组件降级为 angularJs 组件时,我无法使其工作。translate
我想知道这两个指令之间是否存在不匹配?
angularjs - 变更检测在降级的 Angular 组件中不起作用
我正在使用 @angular/upgrade 模块将用 AngularJS 编写的相当大的应用程序转换为 Angular 应用程序。目前,AngularJS 的每个组件都在 Angular 应用程序中按预期运行。该应用程序正在像这样被引导:
但是,我已经开始在 Angular 中重写组件,并且在尝试让那些降级的组件正常工作时遇到了问题。我正在使用 ui-router 将组件映射到如下状态:
重写的组件正在降级,如下所示:
SomeComponent 只是一个常规的 Angular 组件。
它显示得很好,正在渲染模板并且一切正常,但是,更改检测似乎不起作用。更改检测器似乎在渲染视图后不久运行一次,但是在那之后,除非我手动调用它,否则它不会再次运行。NgZone.isInAngularZone()
如果在降级组件中的任何位置运行,则返回false
,我不确定这是否是有意的。如果我注入ChangeDetectorRef
并运行detectChanges
任何更改组件字段的方法,则会检测到更新并很好地呈现。(input)="changeDetectorRef.detectChanges()"
然而,从长远来看,将一个附加到每个输入,并调用detectChanges()
几乎任何可以做任何事情的函数,这将是太多的工作。
有什么我想念的吗?如果我没有提供足够的信息,我可以尝试对运行的问题进行最少的复制,但这可能会有点工作,所以我想先这样问。
angularjs - 如何使用 Angular 5.2 升级 angularjs 服务
目前在混合 angularjs 1.4/angular 5.2 应用程序中升级 angularjs 服务的正确方法是什么,以便我可以在组件中作为提供者使用它?
两个代码库都是打字稿,我使用新的 downgradeModule 来降级角度组件,以控制摘要的数量并且不想破坏它。
我为 Angular js 应用程序生成了一个类型定义文件,以便可以假定所有类都是可访问的。
编辑: 我尝试将服务包装在像 ValueProvider 这样的对象中(我必须用 getter 和 setter 将整个东西包装在另一个对象中以返回它,以便隐藏来自 Angular 的函数调用,它不喜欢函数调用装饰师)。继承人的代码没有 trixing 来解释这个想法。
但是当我尝试将它注入组件构造函数时会出错。
如果我只将它添加到构造函数中,我会得到:[Angular] Can't resolve all parameters for SeparatorComponent in d:/Source/Prevero/Everest/src/com/prevero/everest/oneclient/src/modules/app_components/separators/separator.component.ts: (?)
.
如果我将它添加到提供者数组中,我会得到[Angular] Invalid providers for "SeparatorComponent in d:/Source/Prevero/Everest/src/com/prevero/everest/oneclient/src/modules/app_components/separators/separator.component.ts" - only instances of Provider and Type are allowed, got: [?null?]
angularjs - 可以在实时站点上运行混合 Angular+AngularJS 应用程序吗?
我有一个AngularJS
应用程序,我很想升级到最新版本的Angular
. 但是,问题在于该应用程序使用了十几个不支持Angular
v.2 的不同 3rd 方库。
可以在实时站点上运行混合Angular
+应用程序吗?AngularJS
“OK”是指与运行纯 AngularJS 或 Angular 应用程序相比,这对性能没有严重影响。
Angular 文档清楚地说明了如何执行从 AngularJS 到 Angular 的转换,但不清楚是否应该在实时项目中使用 ngUpgrade。
angularjs - 在 Angular 1 应用程序中使用 Angular 5 服务调用
在我的场景中,我有一个复杂的 angular 1 应用程序,它正在使用另一个脚本文件(在启动 URL 时直接下载的单独的单个 JS 文件)。这个脚本文件也是用 Angular 1.6 编码的,我们现在已经将它迁移为 Angular 5 组件。使用 webpack,我生成了 2 个捆绑文件(vendor.js 和 main.client.js)。
我的问题是我想添加这些脚本并从 angular 1 应用程序调用 angular 5 服务调用,而在 angular 1 应用程序中没有太多代码更改。如果我在 index.html 中添加 Angular 5 的捆绑脚本,它会在浏览器中作为单独的应用程序启动。但我需要的是仅通过 Angular JS 控制器调用 Angular 5 中的特定服务。
我能够实现将其保留为混合应用程序的概念。但这对我没有帮助。请分享您的想法和经验。这对我真的很有帮助,因为我在过去的 1 周里都在头晕目眩。在此先感谢。
angularjs - 混合应用程序中的第 3 方 Angular 4 控件
我正在尝试将 AngularJS 1.5 应用程序升级到 Angular 4。我已经成功地引导应用程序并在 AngularJS 组件模板中加载了一个 Angular4 组件。
现在我正在尝试使用第 3 方 Angular4 树组件,但它无法加载它。我知道降级后只有根模块中定义的组件/服务可用,但有没有办法在混合应用程序中使用第 3 方 Angular4 组件?
如果不是,那是否意味着在完整的应用程序转换为 Angular 4 之前,不能在混合应用程序中使用第三方 Angular 4 组件和服务?这个假设是否正确/
angularjs - 将 ng1 模板放在由 angular-cli 构建的 Angular 混合应用程序中的什么位置?
我正在尝试从 angular.js 应用程序中构建一个角度混合应用程序。我正在关注官方文档(https://angular.io/guide/upgrade)。我到达并完成了这一步:https ://angular.io/guide/upgrade#bootstrapping-hybrid-applications 。
我正在使用 angular ui-router 0.3.1 来处理我的应用程序的路由。因此,使用主模块上的 config 函数和 $stateProvider 服务,我将每个路由映射到 angular.js 控制器和由 templateUrl 参数指定的模板。
我的应用程序似乎可以正确启动,但无法加载模板,因为找不到它们(404 错误)。ng build
这是正常的,因为当我使用angular-cli 命令行时,它们没有导入到构建我的应用程序的 dist 文件夹中。
当我的 Angular 应用程序由 angular-cli 构建时,如何配置我的应用程序以便将我的 angular.js html 模板复制到 dist 文件夹中?
提前致谢!