问题标签 [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.
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
angular - 使用 ES5 声明 Angular2 服务
我在使用 ES5 将服务注入组件时遇到问题。我终于能够让它工作,但发现了几种可以声明服务的不同方式。其中一种是声明服务的更“Angular”方式吗?
这是组件
这是服务(选项1)
这是服务(选项2)
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)
这是正确的吗?谢谢
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 有问题。
任何线索我哪里出错了?
dependency-injection - 在调用 bootstrap() 之前如何访问 angular2 的 Http 服务?
我需要确定用户是否经过身份验证,因此当引导根组件时,它会将用户转发到/signin
或加载他们请求的任何页面。(如果它需要在发出任何请求之前登录,我计划通过注入带有布尔值的服务来做到这一点)。
Angular 的文档提到了“Platform Injector”或“Root Injector”。我可以访问它以获取 Http 对象吗?或者它是在调用引导程序时创建的,我需要从头开始创建自己的注入器来获取 Http?
angular - 在组件或服务中使用 router.navigate 是最佳做法吗?
我不知道 Angular 背后的哲学,特别是关于测试,足以知道我是否应该更喜欢router.navigate()
在组件或服务中使用。
例如,假设您有一个LogInComponent
管理您的登录表单和一个AuthService
处理与服务器对话的表单。当用户成功登录时,您希望将他们从登录屏幕重定向到应用程序的主页。最好在LogInComponent
or中执行此操作AuthService
?
angular - angular2中的全局数据
我正在研究 Angular 2,其中我有应用程序组件,它加载其他组件路由器插座并且还具有登录组件的链接。但我想要保存一些全局变量的方法,这些变量可以在我的应用程序组件和登录组件上访问,以便我可以隐藏和显示登录链接。
这是我的应用程序组件:
这是我的登录组件
登录后,我必须设置一些变量,我可以在应用程序组件上访问以隐藏和显示登录链接,也可以在需要的其他组件上访问。
design-patterns - 当服务功能以角度完成时通知组件
我编写了一个对后端进行 http 查询的服务:
现在我想更新组件端,如果请求完成:
如何在组件和服务之间进行通信?
此外,我正在寻找最佳实践。