【问题标题】:Angular 10 downgrading a service and using it in an existing angularjs serviceAngular 10 降级服务并在现有的 angularjs 服务中使用它
【发布时间】:2020-10-13 20:29:03
【问题描述】:

我们正在运行从 angular js 到 angular 10 的混合升级。
我有一项服务已升级为 Angular。然后我将其降级以注入到现有的 Angular JS 服务中(我们有很多,所以我们需要零敲碎打)。

我发现了这个:https://angular.io/guide/upgrade#upgrading-the-phone-service

但是,这涉及注入组件,而不是 Angular 服务。长话短说,我收到“未知提供者”错误。

我需要帮助降级服务并将它们注入现有的 Angular 服务。

谢谢

【问题讨论】:

    标签: angular upgrade hybrid angular10


    【解决方案1】:

    我们是如何做到的:

    1. 在Angular x中创建一个服务,用@Injectable装饰它(我们用@Injectable({ providedIn: "root" }));
    2. 有一个专门的 AngularJS 模块(我们称之为downgraded.module)并有以下代码:
    import { downgradeInjectable } from "@angular/upgrade/static";
    
    angular
      .module("downgraded.module", [])
      .factory("MyService", downgradeInjectable(MyService));
    
    1. 在 AngularJS 环境中的任意位置注册该模块,并将 downgraded.module 作为依赖项
    angular
      .module('app', ['downgraded.module']);
    
    1. 只需像其他任何服务一样注入服务即可。

    【讨论】:

    • 我与这种模式非常相似,但仍然以“错误:在引导相应的 Angular 模块之前尝试获取 Angular 注入器”结束。请有任何建议
    • 请用您的设置的 MRE 提出一个新问题,这样会更容易回答
    • @CrazyMac - 检查以下内容,其中显示了当第一个迁移的工件是您的示例中的服务时,如何使用服务引导组件来快速启动 Angular 加载;它将修复您提到的错误:stackoverflow.com/a/48668591/410937
    猜你喜欢
    • 2017-09-13
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多