问题标签 [injectable]

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 回答
241 浏览

angular - Angular HttpClient 和服务

好的,这是一个快速的问题。我看到很多实现,开发人员直接在组件中实现 api 请求,因为 HttpClient 是可注入的。这是要走的路还是更清洁(从纯粹主义者的角度来看)拥有适当的服务并在那里拥有所有 HttpClient 请求?对于涉及 HttpClient + Express + Services 的完整示例,我可以参考任何有信誉的来源吗?

0 投票
4 回答
20177 浏览

angular - 使用 jasmine angular2 注入私有服务的单元测试

我在尝试对角度服务进行单元测试时遇到问题。我想验证该服务是否正确调用了另一个注入其中的服务。

假设我有这个注入 ServiceInjected 的 ServiceToTest:

服务测试.service.ts

ServiceInjected.service.ts

有了这些服务,现在我编写单元测试:

我预计我的测试是肯定的,但是我收到以下错误:

预期的间谍配置已被调用。

另一方面,如果我以这种方式将注入的服务设置为公开,它就可以正常工作:

0 投票
2 回答
1553 浏览

angular - 无法将来自服务方法的数据显示到组件中

仍在处理我的 Angular 5 - PHP 项目。

我想将我所有的 http 方法放在一个名为 api 的文件中,并通过将其导入所需的组件来调用我想要的任何方法。我不知道这样工作好不好。

无论如何,这是我的service电话api.ts

我将它导入app.module.ts

然后我将它注入到我的组件中:

这是在这里api: Api

现在,我调用了我想在里面使用的方法ngOnInit()

问题是我在控制台上正确地看到了数据:

在此处输入图像描述

但无法在屏幕上显示它们:

0 投票
2 回答
2297 浏览

angular - Angular 抽象类 HttpClient 注入

大家好,我是 Angular 的新手,我在使用 Injectable 类时遇到了麻烦。

我有一个抽象类(在 web.ts 上),它的受保护属性之一是 HttpClient 对象。这个抽象类的定义如下:

然后我有另一个类(在 webA.ts 上)扩展了 Web 类:

最后,在我的网站的一个组件类中,我想将 WebA 实例化为:

它告诉我需要super("https://www.test.com");在 webA.ts中传递一个 HttpClient 对象。为了解决这个问题,我可以为 WebA 创建如下构造函数:

但这会导致我private webA: Web = new WebA(this.http);强迫我拥有我的组件类:

我知道必须有另一种方法来做到这一点,因为在我看来,这打破了我班级的等级制度

TL;DR:
我需要在抽象类上“自动注入”一个 HttpClient,而不需要将此对象作为参数传递给扩展类中的 super。

0 投票
3 回答
2582 浏览

typescript - Angular 无法注入 HttpClient 得到“无法解析 CustomerService 的所有参数”错误

我有一个customerService我试图注入的地方httpClient。我评论的那一行发生了错误//error happens on this line。一切正常,直到我尝试将 httpClient 注入我的服务。

错误信息是:

(compiler.js:15133)`

不知道从哪里开始调试。任何帮助,将不胜感激。谢谢你!

这是我的客户模块

这是我的共享模块

0 投票
1 回答
74 浏览

angular - 在 Angular2 中,如何使用来自注入服务的值来设置静态变量?

我有一项提供config数据的服务。

现在我想使用该对象在另一个服务中设置一个静态变量。

如果我ConfigData在构造函数中添加AnotherService它是无用的,因为它没有及时将值分配给静态变量。当它们在其他地方使用时,它们已经“未定义”。

有没有办法做到这一点?

0 投票
0 回答
2172 浏览

angular - Angular:带有抽象类的 Injectable() 装饰器

我遇到了奇怪的情况,想讨论它是否正确。(也请在最后寻找小问题更新)

在 Angular 4.3 中,我有一些抽象类,它由几个 Angular 组件扩展。看起来像:

我想在父类 SidePanel 中添加一些通用功能,这需要 angular 的 Injector 可以访问。所以我想做这样的事情:

为了使它成为可能,我可以从孩子那里传递 Injector:

但我不想这样做,因为我有太多孩子,在这种情况下,我不得不在所有这些中添加 Injector。所以我找到了简单的解决方案(但不确定它是否正确):

因此,我的子类(组件)不必拥有自己的构造函数,只需注入和传递 Injector 即可,一切正常。但是在抽象类上应用 Injectable() 装饰器看起来很奇怪。

正确与否?

提前感谢您的意见。

更新 14.03:

事实证明,对于上述情况,可以使用“空”组件装饰器而不是 Injectable:

这也令人困惑:元数据为空的组件意味着什么,使用它是否正确以及为什么所有参数都是可选的(甚至是选择器)?

0 投票
2 回答
58 浏览

angular - Angular 5: Run Constructor before beeing injected

I have a file with global variables:

At the moment my API-Calls fail because the variables aren't set yet. Is there a way to only inject this service when the constructor is run or do I have to use Observables?

0 投票
1 回答
71 浏览

eclipse - javafx 项目有一个 fxml 文档,不允许我将标签注入我的控制器

我创建了一个 JavaFX 项目。这是它的样子:

JavaFX 项目 在 SceneBuilder 中,我创建了BorderPane一个带有 id 的标签label。在我的SampleController我使用这个标签命名label

如果我删除label.setText("hi");代码可以正常工作,但是当代码在那里时,我会收到以下错误。很长,这里是其中的一部分。

javafx.fxml.LoadException:

我认为这是最重要的部分。但是,我可以添加按钮及其操作,它仍然可以正常工作。现在我添加了。

我做了与带有窗格的标签相同的事情,但我得到了一个空指针异常。

0 投票
3 回答
15061 浏览

angular - Angular 6:为“root”提供 HTTP_INTERCEPTORS

随着从在 AppModule 中提供服务的 Angular 5 更改为在 @Injectable 装饰器中设置“provideIn”键的 Angular 6,我已将所有服务更改为使用新的“provideIn”方法。但是,我的拦截器服务例外。

如何为“root”提供 HTTP_INTERCEPTORS 令牌并使用 InterceptorService?

这是我使用 atm 的 Angular 5 方式:

在 AppModule 中:

但是Angular 6的方式是什么?

我试过类似的东西

以及许多其他带有 Injectable 的变体,但似乎无法弄清楚如何在不将对象文字直接写入模块提供者的情况下使其工作。