【发布时间】:2021-04-13 06:12:19
【问题描述】:
我正在尝试托管一个简单的混合应用程序(AngularJS + Angular 7)。我能够根据指南设置基本和引导两个模块。我能够建立从 AngularJS 到 Angular 的通信。
我遵循了在 Angular 模块 (https://angular.io/guide/upgrade) 中注入 AngularJS 服务的指南。但是,我发现我遇到的一些问题可能是我试图理解的基本设置。
这是真正的问题,当我尝试从 Angular 调用 AngularJS 服务时,它在运行时失败,说明注入 AngularJS 服务的依赖项未定义。例如:$http 没有定义。
我的问题是,我是否需要通过 Angular 模块中的提供者来注入这种依赖关系,我有一个提供者将服务本身注入到 Angular 模块中。任何有关指南或标准的帮助都会有所帮助。
这是我的 AngularJS 服务的格式。目前,我正在将其修改为类并尝试从 Angular 调用
function GetUsers( $http, OtherDependency) {
return {
getUsers: getUsers
}
function getUsers(userID, key, phrase) {
//$http is used inside this method
}
在 Angular 中,我通过提供者注入此服务并尝试通过其构造函数实例化来使用此服务
【问题讨论】:
-
尝试在 Angular 组件的构造函数中使用
@Inject,constructor(@Inject('$http') public $http: any) { } -
@KevinZhang 你的意思是我还必须在 Angular 服务中注入所有第 3 方 AngularJS 依赖项吗?每当我这样做时,我最终都会收到一个错误“错误:在设置 AngularJS 注入器之前尝试获取它。”因此删除了
-
你能在stackbliz中写一个简化的demo吗,我可以研究一下。
-
@KevinZhang 我试图捕捉最小的细节stackblitz.com/edit/angular-ivy-ku8u2w
-
@KevinZhang 我的代码与您在 Angular 模块中提到的代码相同。 AngularJS 服务中是否会有任何更改以使依赖项以不同的方式注入,因为它抱怨该文件中缺少依赖项