gpt4 book ai didi

javascript - 从 JavaScript 代码访问 Angular 服务实例

转载 作者:行者123 更新时间:2023-11-29 17:46:06 26 4
gpt4 key购买 nike

我想做的是根据 Angular 服务中的数据进行一些测试断言,即我们正在尝试创建 E2E 测试,我们使用的工具允许我们执行任意 JavaScript 代码来断言,因此,为此我需要知道是否可以访问 Angular 服务实例。

如何从纯 JS 代码访问 Angular 服务实例?

也就是说,如果我的 Angular 应用程序已部署,我在浏览器中打开该应用程序,然后打开 Chrome DevTools,我能否访问提供给所有组件的 Angular 服务的服务实例?

我知道可以通过 ng.probe($0) 访问您的组件等等,但不确定服务。

从我到目前为止的搜索来看,我们似乎必须使用 Injector类,然后使用它的 .get()方法来访问 Angular 服务实例之一,但我不确定如何访问 Injector类/实例本身?

这是我尝试过的:ng.probe($0) ($0 是我应用程序的 <app-root>)然后我看到返回值有一个 .injector属性(property),我试着调用ng.probe($0).injector.get('MyServiceName')并收到以下错误:Uncaught Error: No provider for MyServiceName! .

(尽管我正在尝试上面的 ng.probe,但我很想知道如何在没有 ng.probe 的情况下访问注入(inject)器,因为在执行自动化测试期间,即生产模式,我认为我不会能够做到 ng.probe($0) )

所以我不确定我是否尝试以正确的方式访问它?有什么想法吗?

我正在使用 Angular 4。

最佳答案

这对我在 Angular 7 中使用 ng.probe() 很有用:

window.ng.probe(window.getAllAngularRootElements()[0])
.injector.view.root.ngModule._providers
.find(p => p && p.constructor && p.constructor.name === 'MyServiceName');

而且我想如果没有 ng.probe()

就不可能用另一种方式来做

关于javascript - 从 JavaScript 代码访问 Angular 服务实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49540653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com