问题标签 [angular2-injection]
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.
angular - angular 2 - 在 http 错误处理程序中注入服务
我有一个方法 handleError() 就像文档https://angular.io/docs/ts/latest/guide/server-communication.html#!#error-handling
我的问题是,尽管this.loginService已正确注入我的班级,但它是未定义的。它已在其他方法中使用,但在handleError中似乎不可用。
http-catch 调用该方法的方式可能是问题所在吗?如果是这样,我该如何解决?处理错误时我需要执行一些逻辑。
这是一个关于我如何将 handleError 方法设置为回调的示例(就像文档一样)
angularjs - 在构造函数中未定义注入的服务
对于注释,我对 Angular 非常陌生(就此而言是 1 或 2)。
我正在尝试编写 Http 的“超级”层,以避免必须在任何地方放置相同的标头。
还有一个服务来告诉请求何时执行;它被注入到上面的类 HttpLoading 中。
我的引导程序中有很多东西,包括 HttpLoading、LoadingService 和 ConnectionBackend(对于最后一个,如果它不在这里,我会得到一个异常)。
问题是我第一次调用HttpLoading
'spost
方法(在另一个服务中)时,我在this._ls.isLoading
, 因为this._ls
是未定义的,所以我得到一个异常,我不知道为什么。
如果您需要更多信息,请告诉我。
编辑
LoadingService
正确注入我的AppComponent
(主要组件)。
潜在的解决方案
看来您的公共/私有参数必须放在列表的首位。我会让比我更熟练的人解释原因,不过......
angular - Angular2 在没有引导的情况下注入 Http
语境:
我有一个类将为我的 REST Api 形成 POST 请求,我们称之为requester。在我的应用程序中进行的每个 ajax 调用都将通过它发送。因此,我不想通过它提供 Http,bootstrap(foo, [HTTP_PROVIDERS]);
这会使它成为全球性的,我需要将它注入到请求者
代码:
错误:
原始例外:没有 Http 的提供者!(请求者 -> Http)
angular - Angular2 - 如何将服务注入自定义异常处理程序
我有一个像这样的自定义异常处理程序,我试图在其中注入服务(ErrorReportingService)
我试图注入的服务看起来像这样
ErrorReportingService 在应用组件的提供者下注册。
我也尝试过像这样以不同的方式注入服务:
尝试运行应用程序时出现此错误:
javascript - 在哪里将服务提供者放在 Angular 2 层次结构中,以便组件可以使用相同的服务实例相互通信?
相关问题:
Observable 没有收到 angular2 中的下一个值
angular2中没有服务错误的提供者,为什么我需要将它注入它的父组件?
在 angular2 中使用与其他组件的可观察对话,没有收到即将到来的价值
我有一个具有 setCurrentPlaylists 函数的 PagesService,该函数将从其他组件触发,它将接收 Playlists 类型的值,并将控制台记录该值,使用下一个函数传递给其他组件(我打算这样做)。
我的页面服务的整个代码是:
我的页面组件代码是:
当我触发 setCurrentPlaylists 函数时,播放列表没有传递给 pages 组件。我需要使用传递的值来更新页面组件的播放列表。
这是我触发 setCurrentPlaylsts 函数后的控制台输出。没有来自页面组件的消息。
任何建议表示赞赏!
我从此组件调用 setCurrentPlaylists 函数
unit-testing - Angular 2 rc5,使用注入的管道的单元测试问题
我正在使用 angular2 rc 5,我编写了一个从 json 获取值的自定义管道。自定义管道:literal.pipe.ts 看起来像:
消息服务.ts:
Bundle.json 的键值对为
我正在使用 liteServer 运行我的单元测试。我的unitTests.html:
literal.pipe.spec.ts 如下:
看起来我在规范文件的某个地方出错了,因为当我运行 npm test 并查看在浏览器中打开的 unitTests 时,我收到以下异常:
我应该改变什么才能使这项工作。
angular - Angular2:为什么要使用私有访问说明符来实例化构造函数中的提供者
为什么只使用私有访问说明符来实例化构造函数中的提供者?是否有任何特定原因仅使用私有访问说明符?
私人注射
公共注射
angular - Angular2 RC6 HttpModule 手动注入
我正在将一个项目从 angular2 RC4 迁移到 RC6,并且我有一个自定义表单验证器,它需要Http
. 在迁移之前,我将ReflectiveInjector
与 一起使用HTTP_PROVIDERS
,但在 RC6 中,这不再可能,因为HTTP_PROVIDERS
已弃用,不再存在。这是验证器中的静态方法:
只是替换HTTP_PROVIDERS
没有HttpModule
用,我在 stackoverflow 上发现了一个类似的问题(NG2 RC5: HTTP_PROVIDERS is deprecated)关于测试,但唯一的答案是特定于测试的。
如果此自定义验证器有其他或更好的解决方案,我如何手动“注入”Http
或使用 RC6,我也对此持开放态度。HttpModule
提前致谢。
更新:该checkVat
方法是静态的,这就是为什么我必须使用 ReflectiveInjector 而不仅仅是通过构造函数注入它,就像其他地方一样。自定义验证器的使用方式如下:
UPDATE2:在 Günther Zöchbauer 的回答的帮助下,我将代码更改如下,使其在没有静态函数且无需手动注入的情况下工作:
验证者:
导出类 VatValidator {
}
在具有 FormControl 的组件中:
angular - 测试 - 无法解析 (ClassName) 的所有参数
语境
我创建了一个ApiService
类来处理我们的自定义 API 查询,同时使用我们自己的序列化器和其他功能。
ApiService
的构造函数签名是:
MetaManager
是一个处理 api 元数据的可注入服务。ApiConnectorService
是一项服务,Http
用于添加我们的自定义标头和签名系统。EventDispatcher
基本上是 Symfony 的事件调度系统,在 typescript 中。
问题
当我测试时ApiService
,我在以下位置进行初始化beforeEach
:
它工作正常。
然后我添加我的第二个规范文件,即 for ApiConnectorService
,其中beforeEach
:
所有测试都因此错误而失败:
错误:无法解析 ApiService 的所有参数:(MetaManager、?、EventDispatcher)。
- 如果我从加载的测试中删除
api-connector-service.spec.ts
(ApiConnectorService
的规范文件),ApiService
则测试将成功。 - 如果我从加载的测试中删除
api-service.spec.ts
(ApiService
的规范文件),ApiConnectorService
则测试将成功。
为什么我有这个错误?我的两个文件之间的上下文似乎存在冲突,我不知道为什么以及如何解决这个问题。
angular - 加载 CustomExceptionHandler 时,Angular 2 注入器找不到服务
当尝试将服务注入我的 CustomExceptionHandler 时,Angular 注入器找不到该服务。
错误:Uncaught Can't resolve all parameters for CustomExceptionHandler: (?).
设置:
自定义异常处理程序
应用程序模块