问题标签 [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 回答
565 浏览

angular - app.module 提供程序和组件是否共享同一个 Injectable 实例?

当我将可注入的 CameraChannelService 添加到 ngModule 的提供程序数组中时:

它是否只为该组件创建一个新实例?当我将它注入到 NgModules 声明组件之一中时?

0 投票
1 回答
2072 浏览

angular - Angular 2 / Jasmine / Karma 错误:错误:无法解析路由器的所有参数:(?,?,?,?,?,?,?,?)。在 config/karma-shim.js

这是服务:

这是失败的测试:

不知道为什么会失败?谷歌搜索类似问题,我只能找到 Angular 2 beta 的答案......我们使用的是最新的 Angular 2 / 2.2.0

0 投票
1 回答
2910 浏览

angular - 使用 app.component 中核心模块的服务

嗨,我是 angular 2 的新手,我试图将我在 angular.io 中学到的所有东西都落实到位。问题是我已经阅读了关于核心模块、服务、注射剂......和

如果我有一个这样的核心模块:

和一个简单的 app.module,例如:

如何使用为核心模块导出的 LoggerService 服务?我必须

在我的 app.component 中?因为在 app.component 的构造函数中它不起作用

我错过了什么?谢谢!

0 投票
0 回答
924 浏览

http - Angular 2 - 参数类型 RequestOptions 不可分配给参数类型 RequestOptions

我尝试创建自定义 Http 类以在全球范围内处理 401 错误。调用超级构造函数时出现错误 -参数类型 RequestOptions 不可分配给参数类型 RequestOptions

这是我的代码:

0 投票
1 回答
249 浏览

angularjs - 无法从可注射的内部解析组件的参数

我正在尝试将一个组件导入到我的可注入服务中,但似乎我做错了什么。类似情况下的其他页面也会发生这种情况。目前的情况似乎发生了,因为我试图导入 SessionService 的 LoginPage 需要 SessionService,它在某处闻起来有无限循环的味道。除了在可注入的 SessionService 中不包括页面组件之外,我应该如何解决它的任何想法?

我当前的架构是构建的,因此如果会话不存在,我需要重定向到登录页面。Ionic NavController 需要一个页面组件来推送到导航堆栈。欢迎使用其他解决重定向问题的方法,但我也想了解为什么会这样。

会话服务.ts

登录页面.ts

对于那些要求它的人,content.service.ts

app.module.ts

我将 Angular 2.2.1 与 Ionic 2.0.0-rc.4 一起使用。

0 投票
1 回答
2347 浏览

angular - 如何制作 Angular2 服务单例?

我正在尝试在我的应用程序中实现身份验证保护。IE; 只有经过身份验证的用户才能访问我的应用程序的某些路由。我正在遵循这里给出的 tut 。

用户登录后,我将 AuthService 中的布尔值更改为 true 以指示用户已登录。这需要在应用程序的整个生命周期中保留。

下面给出源代码:

auth-guard.service.ts

auth.service.ts

登录组件.ts

控制台输出

编辑:app.module.ts

我在这里做错了什么?任何帮助,将不胜感激。

0 投票
1 回答
1350 浏览

angular - Angular 2:如何强制注入成为应用程序中的单例

我的应用程序中有一项@Injectable服务作为提供程序添加到AppModule. 我想确保我的开发团队中没有人将它注入任何其他模块。一个实例就足够了,它有一些我不想运行两次的复杂逻辑。有任何想法吗?

我知道 DI 在 Angular 2 中是如何工作的,所以像“确保它仅在 App Module 中作为提供者添加”这样的答案将无济于事。:(

请注意,如果该服务提供给除 AppModule 之外的任何其他服务,我希望它在构建或运行时产生某种错误。

0 投票
1 回答
151 浏览

arrays - Angular 2:如何在一个数组中返回属于多个扩展超类的类的对象?

我正在尝试在 Angular 2-Native Script 应用程序中创建一个服务,该应用程序定义了一组新闻项目,并有几种对相同数据进行操作的方法。这些新闻项目可以是不同的类型,例如大、小等,每个都可以有不同的参数。

我已经定义了接口和服务,如下所示。

我收到如下错误:

如何定义数组以使其可分配给新闻项目?

0 投票
1 回答
1152 浏览

angular - 如何使用服务初始化 Injectable 变量

当用户登录时,我正在使用 Ionic2 Storage 存储用户 access_token 凭据。

当用户尝试访问后端 api 时,我需要将 access_token 提供给 REST 客户端。

我使用hBoylan 的 ng2-http 包创建了服务 最初该包使用

我使用Angular2 DI将 UserStorage 组件添加到构造函数中:

得到这个:

目前当我打电话时

我需要使用

添加 access_token 凭证

截至目前,我在页面组件中的调用必须如下所示:

它看起来像这样的原因是因为我似乎无法在 CategoryService 类的构造函数中设置用户。所以我必须首先从存储中获取用户,在类别服务中使用“setter”,然后将 getAvailableCategories() 调用嵌套在 getUser().then() 函数中。

这是因为在 CategoryService 构造函数完成从 UserStorage 设置用户之前调用了 getCategories 函数。

我知道这是因为调用是异步的,但我觉得好像使用 setTimeout 之类的东西来“等待”直到 getUser 调用返回是 hacky 并且不是 100% 可靠的。

还有什么我可以尝试的吗?我真的很想打电话

并从那里继续没有嵌套的承诺调用。

我愿意进行任何精明的更改,以使 access_token 立即可用。

0 投票
1 回答
2427 浏览

unit-testing - Detecting changes to service stub using TestBed

This is the test example for a Component with a Service using stubs provided in the angular2 documentation.

When I am trying to build it out and run it, I find that the component does not pick up the changes for the second test case. I always see the message.

The service looks like this:

import { Injectable } from '@angular/core';

The component looks like this:

This is the unit test in question:

The error is always:

Error: Expected 'Welcome, Test User' to contain 'Bubba'.

When debugging, I found that the service stub is updated with the appropriate value.