问题标签 [angular2-services]

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 投票
2 回答
2150 浏览

angular - Angular 2 Beta - 向组件注入 http 数据服务时出现问题

我是 Angular2 的新手,具有 Angular 1.3 的经验,我正在尝试构建一个大型 Angular 2 应用程序,以了解每个功能的连接方式(模板语法、DI、路由、可观察)。实际上我面临的问题是在尝试创建一个单独的数据服务并将所有 HTTP 调用并将其注入其他组件时。下面的代码我得到了这个错误EXCEPTION: No provider for ConnectionBackend!

我还需要帮助删除仪表板摘要中的冗余导入。

仪表板HTTPS服务

仪表板总结

引导程序

来源: https ://github.com/sabha/angular2_store

演示: http ://demoapp-angular2store.rhcloud.com/client/index.html

0 投票
2 回答
415 浏览

angular - 使用 ES5 声明 Angular2 服务

我在使用 ES5 将服务注入组件时遇到问题。我终于能够让它工作,但发现了几种可以声明服务的不同方式。其中一种是声明服务的更“Angular”方式吗?

这是组件

这是服务(选项1)

这是服务(选项2)

0 投票
1 回答
1868 浏览

dependency-injection - Angular 2 @Injectable() - 它是如何工作的

我试图了解@Injectable()在 Angular 2 中添加服务装饰的必要性。

来自文档:https ://angular.io/docs/ts/latest/guide/dependency-injection.html

为什么不给 HeroesComponent 添加@Injectable() 呢?如果我们真的想添加它,我们可以添加它。这不是必需的,因为 HeroesComponent 已经用 @Component 装饰了。TypeScript 为任何带有装饰器的类生成元数据,任何装饰器都可以。

所以基本上你只需要在@Injectable()没有其他装饰可用的情况下添加,因为如果有任何类型的装饰可用,打字稿编译器将根据你在构造函数中传递的变量自动生成依赖信息,例如:constructor(private logger: Logger)

这是正确的吗?谢谢

0 投票
2 回答
766 浏览

dependency-injection - angular2向其他人注入服务-使用@Inject时出错

我正在使用 angular2 Beta。并且在使用@Inject 注释将我的一项服务DI 到另一项服务时出现错误,无法找出我错在哪里。一切似乎都符合 Angular2 文档

我正在使用基于云的数据服务 - CloudDB - 来满足我的应用程序的数据需求。CloudDB 为我提供了一个基于 javascript 的客户端库,我可以将其包含在我的 js 应用程序中,并用于在我的 cloudDB 数据库中执行 CRUD 操作或调用我存储在我的 CloudDB 帐户中的其他自定义 API,例如 UserAuth API(用于验证用户凭据的 API)。在使用 cloudDB js 客户端 lib API 之前,我需要通过调用 CloudDB js 对象的 getClient 方法来提供我的 cloudDB 帐户的 URL 和 authKey。

在我的 angualar2 应用程序中,我创建了一个可注入服务类 - CloudDBProvider - 它将存储我的 CloudDB 帐户 URL 和 authKey 并调用 CloudDB.getClient 为我的 CloudDB 帐户设置提供程序的 js 客户端对象。

现在,我想在这个 angular2 应用程序中创建一个 UserUtils 服务,我想将上面的类注入到该服务中以获取 cloudDBClient 对象。从您的教程中了解到,我编写了如下所示的 UserUtils 服务类

}

然后我尝试在我的 LoginPage 组件中使用 UserUtils,如下所示:

当我使用 UserUtils 时,组件 LoginPage 不起作用。浏览器控制台抛出错误 - 没有 CloudDBProvider 的提供者!(LoginPage -> UserUtils -> CloudDBProvider)

请注意,如果我将 'authencateUser' 方法从 UserUtils 直接移动到 CloudDBProvider,并在 LoginPage 组件中使用 CloudDBProvider 进行用户身份验证,那么一切正常,用户在登录后通过身份验证并导航到欢迎页面。此外,如果我从 UserUtils 的构造函数中删除 @Inject(CloudDBProvider) cloudDBPrvdr,则不会引发错误并且应用程序正常工作,显然我不能在 UserUtils 中使用 CloudDBProvider,但关键是应用程序不会抛出任何错误,这意味着 @Inject 有问题。

任何线索我哪里出错了?

0 投票
1 回答
277 浏览

dependency-injection - 在调用 bootstrap() 之前如何访问 angular2 的 Http 服务?

我需要确定用户是否经过身份验证,因此当引导根组件时,它会将用户转发到/signin或加载他们请求的任何页面。(如果它需要在发出任何请求之前登录,我计划通过注入带有布尔值的服务来做到这一点)。

Angular 的文档提到了“Platform Injector”或“Root Injector”。我可以访问它以获取 Http 对象吗?或者它是在调用引导程序时创建的,我需要从头开始创建自己的注入器来获取 Http?

0 投票
1 回答
1681 浏览

angular - 在组件或服务中使用 router.navigate 是最佳做法吗?

我不知道 Angular 背后的哲学,特别是关于测试,足以知道我是否应该更喜欢router.navigate()在组件或服务中使用。

例如,假设您有一个LogInComponent管理您的登录表单和一个AuthService处理与服务器对话的表单。当用户成功登录时,您希望将他们从登录屏幕重定向到应用程序的主页。最好在LogInComponentor中执行此操作AuthService

0 投票
1 回答
1870 浏览

angular - 在 Angular2 中实例化 LocationStrategy 时出错

我正在angular-2中开发一个应用程序中开发一个应用程序,其中我有索引页面,它将加载我的应用程序组件。应用组件内容路由加载主页或登录。

这是我的 index.html

这是我的bootstrap.ts

这是我的app.ts

它加载了我的其他组件,但是当我运行我的应用程序时出现错误。

在此处输入图像描述

请纠正我在这里遗漏的内容。

0 投票
1 回答
1739 浏览

angular - angular2中的全局数据

我正在研究 Angular 2,其中我有应用程序组件,它加载其他组件路由器插座并且还具有登录组件的链接。但我想要保存一些全局变量的方法,这些变量可以在我的应用程序组件和登录组件上访问,以便我可以隐藏和显示登录链接

这是我的应用程序组件:

这是我的登录组件

登录后,我必须设置一些变量,我可以在应用程序组件上访问以隐藏和显示登录链接,也可以在需要的其他组件上访问。

0 投票
2 回答
2241 浏览

design-patterns - 当服务功能以角度完成时通知组件

我编写了一个对后端进行 http 查询的服务:

现在我想更新组件端,如果请求完成:

如何在组件和服务之间进行通信?

此外,我正在寻找最佳实践。

0 投票
2 回答
879 浏览

angular - 没有 serviceName 的提供者!(组件名称 -> 服务名称)

我正在开发angular2应用程序。我编写了一个服务来保存数据,这些数据将在任何组件上的应用程序中可用并更新它。

这是我的GlobalDataService .ts

这是我的 bootstrap.ts

我已经注入了GlobalDataService appComponent。在整个应用程序中拥有单个实例。

这是我的 appcomponent 尝试访问 globalDataService

但是当我运行我的应用程序时,它给了我错误

在此处输入图像描述

请更正我在这里遗漏的内容。