问题标签 [angular2-providers]
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 - Angular2:如何将同一服务的两个实例注入多个组件?
假设我有一个如下所示的 Angular 服务:
目前我有几个使用剪贴板服务的组件。
当您右键单击英雄时,您可以复制/剪切它们。以后,在同一个组件或者不同的组件中,都可以粘贴英雄。像这样的东西:
我现在想向我的组件添加拖放功能。有趣的是,拖放的,和 方法是相同的,但是我需要使用剪贴板的单独实例来防止以下canPaste
情况:paste
cut
copy
- 用户剪辑“蝙蝠侠”
- 用户将“超人”拖放到新位置
- 用户尝试粘贴“蝙蝠侠”,但不幸的是剪贴板已被拖放污染。
我可以创建一个名为DragDrop
扩展剪贴板的新类:
这允许我像这样更新 HeroTable:
这也允许我在另一个组件中使用剪贴板的两个实例,并告诉哪个是哪个。我需要确保所有组件都知道哪个剪贴板应该用于剪切/粘贴,哪个应该用于拖放。
不幸的是,这个解决方案感觉就像一个黑客。有没有一种 Angular 有福的方式来做到这一点?
我发现了这个问题:Angular2:如何使用同一服务的多个实例?这看起来非常相似,但是我希望鉴于我提供的详细信息,我可能会得到略有不同的回应。
angular - 无法解析 Ionic 2 / Angular 2 提供程序
我正在使用 Ionic 2,并且自 2.0.0 版以来在提供程序/注入方面存在一些问题。我不断收到的错误如下(使用不同的提供者,而不仅仅是这个):
未捕获的错误:无法解析 LoginRedirectService 的所有参数:(App、?、AlertController)。
解决我的提供程序的注入似乎存在问题,即使它们都用@Injectable 装饰。
一个文件
不同的文件
等等。
我还在 app.module.ts 中添加了所有提供程序,按照它们必须注入的顺序:
我的项目结构如下所示:
- 源代码
- 应用程序
- app.module.ts
- app.component.ts
- 资产
- 页面
- 提供者
- 子文件夹
- ...
- 应用程序
- package.json 等
我尝试在需要它们的类的构造函数中显式调用@Inject,但也没有成功。
我真的不知道该怎么做,感谢任何帮助,谢谢
angular - app.module 提供程序和组件是否共享同一个 Injectable 实例?
当我将可注入的 CameraChannelService 添加到 ngModule 的提供程序数组中时:
它是否只为该组件创建一个新实例?当我将它注入到 NgModules 声明组件之一中时?
angular - Angular2 模块:我如何从另一个模块导入服务
我需要导入ClinicFacilityService
在另一个模块(apiClient.module
)中声明的
这甚至可能吗,如果不是,为什么不可能。目前我正在ClinicFacilityService
像这样导入:
angular - Angular2,AoT 编译:无法确定组件 AppComponent 的模块
摘要:我正在尝试将 Angular2 AoT 用于我的 Angular2 应用程序,但由于我有静态提供程序将一些值从服务器传递到 Angular2,因此ngc
显示了一些错误。我的问题是如何获取ngFactory
使用ngc
.
详细信息:我正在使用说明书指南,运行"node_modules/.bin/ngc" -p tsconfig-aot.json
显示以下错误:
tsconfig-aot.json:
包.json:
指数.pug:
main.ts:
app.module.ts:
app.component.ts:
更新 1:如评论中所述,我验证如果我删除静态提供程序的代码,我用于将数据从 servver 传递到 Angular2,即createMainModule()
在 app.module.ts 中,等等,然后ngc
工作正常。
更新 2:我使用 SystemJS 作为模块加载器。
angular - 检测语言环境并使用提供程序将其设置在 Angular 2 根模块上
我有一个检测当前语言环境的功能,我需要通过提供程序将语言环境设置为 angular 2 root App 模块。这样我就可以在所有其他组件中使用它。
我知道我可以像下面那样做到这一点。
{提供:'Locale',useValue:'en-US'}
但如果可能的话,我想在下面做这样的事情。
{ 提供:'Locale',useValue: this.detectLocale() }
否则请提出任何合适的方法来实现这一点。谢谢。
angular - 如何为所有延迟加载的模块提供自定义提供程序
我在我的应用程序中使用子组件的延迟加载策略。在应用程序的顶层,我有拦截所有 ajax 调用的自定义 HTTP 提供程序。
我的延迟加载模块不会影响此自定义提供程序。有没有办法也为他们提供?providers
在 component.module 文件中的属性中没有重复代码。谢谢!
angular - Angular 2 - 404 提供程序问题
我在尝试在 Angular 2 应用程序中添加提供程序时遇到问题。我正在尝试一些我在网上找到的解决方案,但我无法弄清楚我的应用程序发生了什么。
基本上,当我将提供程序添加到我的代码时,我遇到了问题:
- GET http://localhost:3000/dist/services/performances.service 404(未找到)
- 错误:(SystemJS)XHR 错误(404 Not Found)正在加载http://localhost:3000/dist/services/performances.service (...)
注意:我检查了路径是否正常,并且可视代码没有给我任何错误。
在下图中,您可以看到我的应用程序的输出。
我要添加的服务:(performances.service.ts)
我的 app.component.ts
systemjs.config.js
知道添加基本提供程序时我做错了什么吗?谢谢!
已编辑
下面你可以看到我当前使用的所有依赖项
angular - Ionic2/Angular2 应用程序中的提供者内部的提供者
我有两个提供者。
AppStorage 负责从存储中设置和获取值。
/li>OauthService 这是我的 api 服务。
/li>
现在我将两个可注射添加到我的 app.module
但是当我运行应用程序时,oauthService 的构造函数中的 appStorage 对象未定义。你能告诉我我在做什么错误吗,我只是在另一个服务中注入服务。