问题标签 [angular-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 - angular 4 http拦截器:工厂没有被调用
我正在尝试将拦截器添加到我的 Angular 4 应用程序中。
我有以下拦截器代码
我在 app.module 中使用如下
以下是我正在使用的模块版本
但是没有一个调试器语句被命中。有人可以帮我吗?如果我将它注入任何组件,它会显示错误为“没有连接后端的提供者”。提前致谢。
angularjs - 为什么我的 Angular2 控件需要作为提供者包含在内?
我正在尝试学习 Angular 并且遇到了可能是一个非常简单的问题。
我已经编写了一个名为“PageSelectorComponent”的用于进行网格分页的子组件。该组件仅获取总记录数并计算和显示页面链接(此组件中不使用提供程序)。我已将此组件嵌入到另一个名为“TestComponent”的组件中。
PageSelectorComponent 和 Test Component 包含在我的 app.module.ts 文件的 delarations 部分中。
我的问题是我收到以下错误:
如果我将 PageSelectorComponent 添加到 app.module.ts 的提供程序部分,一切正常,除了现在我得到了该组件的两个实例。这导致我的订阅不起作用。
我查看了 PageSelectorComponent 和 TestComponent 是如何声明的,但没有发现区别。
为什么应用程序抱怨没有将 PageSelectorComponent 列为提供者?
这是我的 app.modules.ts 的 NgMoudle 部分:
这是 PageSelectorComponent 的定义:
就像我说的,我认为我在这里错过了一些非常基本的 Angular 东西。关于在哪里看的任何建议?
提前致谢!
javascript - Angular 2中没有路由器提供者
作为一个新手,我在 Angular 2 中设置路线时遇到了问题。虽然我很确定,但这是我所缺少的非常基本的东西。
我想要的只是App Component
加载并显示标题。就在它的下方,一个链接会加载contact-list component
到路由器插座部分。
这里是app.module.ts
但是是说:
error_handler.js:54 EXCEPTION: Error in ./AppComponent class AppComponent - inline template:2:4 caused by: No provider for Router!
没有路由器的提供者。
我究竟做错了什么 ?
更新:
如果我做 :
中app.component.ts
,它工作正常。
发布解决方案后,我看到重复的行:
angular - Angular (2/4) 类似于 Symfony (2/3) 标记的服务
我正在尝试实现类似于 Symfony 的标记服务的东西。
它将用于什么:我想将“选民”复制到我的前端逻辑中(是的,我知道前端技术不会给我 100% 确定真正的许可,这就是我需要这种逻辑的原因“翻译”后端到前端)。
我想要获得的成功:一个包含配置服务数组的signle服务(通过构造函数、setter或其他方式)。最好也可以使用forChild静态方法在任何子模块中使用此模块,因此该服务将包含来自主模块和子模块的投票者。
到目前为止我所做的:我在我的模块中创建了一个提供程序
然后,我创建了PermissionCheckerService和IsGrantedComponent
不知何故,我设法将PermissionCheckerService的实例放入我的IsGrantedComponent但我不明白,为什么选民数组是空的,即使我确实按如下方式提供它们:
恐怕我在某处误解了文档(正在阅读文档并试图比较来自 3rd 方库的“相似”逻辑)。
angular - Angular 异步工厂提供程序
我想建立一个执行异步工作以返回服务的工厂,然后将该工厂提供给工厂提供者,以便在组件加载时将该服务提供给组件。
但是,当提供程序将 注入 时TestService
,TestComponent
运行时的类型是ZoneAwarePromise
. 我需要一种方法让提供者在将服务注入组件之前自动“等待”承诺。
服务
供应商和工厂
应用模块
测试组件
javascript - Angular UrlResolver 未被自定义提供程序覆盖
我有一个 Angular 应用程序,我想在其中使用自定义 UrlResolver 提供程序来添加一些缓存中断逻辑,如本问题所示(https://stackoverflow.com/a/43289767/868914)。
但是,我似乎无法使用提供程序覆盖默认编译器 UrlResolver,就像我通常会做的那样,正如上面的链接所暗示的那样。
这是一个显示我的意思的 plunker:https ://plnkr.co/edit/zFsdyfNIoPcmbLO7WafW?p=preview
如果您使用 chrome(或其他好的)开发工具调试器来查看 compiler.umd.js 的源代码并搜索 UrlResolver 并在“resolve”方法中放置一个中断,您可以看到正在使用默认实现而不是我提供的课程。
我找不到原因,希望这里有人知道原因/解决方案?
这是 app.module 代码(也可以在 plunkr 上看到)
angular - 一个应用程序中的多个 ngrx 存储
我们是大型 Angular 应用程序模块的开发人员。模块是相互独立的,它们是由不同的团队开发的。我们想在我们的模块中使用一个 ngrx 存储。
另一个模块已经有一个 ngrx 存储。如果我尝试以通常的方式将商店添加到我们的 module.ts 中:
它破坏了整个应用程序。有没有办法为我们的模块提供单独的存储?
(应用程序使用ngrx2)
angular - 延迟加载和提供者策略
现在,使用 Angular v5,在使用延迟加载的同时,我加载了app.module.ts
我认为可能不是最佳策略的所有提供程序,因为这不会加快我的应用程序启动时间,特别是因为我有类似 50 的自定义提供者(不要评判我;))。
因此,我问自己是否真的应该为我的所有应用程序加载所有这些,或者我是否应该只在我只使用它们的地方加载它们?
我猜最好只在我真正使用它们的地方加载提供程序。
但是在这种情况下,对我来说根本不清楚如何解决以下构造:
假设我有三个页面(A、B 和 C),它们有自己的模块和三个提供者(1,2 和 3)。
我想,因为 1 在所有应用程序中都使用,所以我必须在
app.module.ts
由于 3 仅在页面 B 中使用,我想我只需要在
B.module.ts
但是2呢?我如何在两者中声明它
B.module.ts
并C.module.ts
以共享相同的提供者“内存”为目标(如果提供者包含一个值,则 B 和 C 都应该看到同一个对象),我将如何分别编码?只需“像往常一样”注入提供者,然后用角度来完成其余的工作吗?
提前谢谢任何帮助,将不胜感激
更新
不确定我是否正确理解了角度文档,但这是目标,应该为所有应用程序加载提供程序,对吗?
看
https://angular.io/guide/ngmodule-faq#q-component-scoped-providers
2018 年更新
注入策略随着 Angular v6 的引入而发展。根据文档,可以providedIn
指定应该在哪个模块中使用服务。见https://angular.io/guide/dependency-injection
javascript - 子组件中的子服务在父组件中是否可见?
假设我有一个 app 文件夹,它是我的应用程序的根文件夹。
如果我现在在 app 文件夹中有一个名为“second”的子文件夹(app 是父文件夹,子文件夹是“second”),那么该子文件夹也有服务并在他自己的模块中提供父文件夹,如果我在app.component.ts中使用服务(从子文件夹导入)并使用它的字段、方法,还是仅在子文件夹中可见而在其他任何地方都不可见?
html - Angular Providers 做什么以及如何使用它?
我是 Angular 的新手。我遵循此链接中的教程,并尝试执行/添加不属于该教程的内容。我在里面加了providers :[EmployeeService]
一行employee-list.component.ts
,它返回错误说。所以要意识到添加一些组件是不必要的。我从这个链接中读到了依赖注入,但我并没有真正得到我想知道的东西。那么谁能给我一个简单的解释如何/何时/在哪里使用/放置提供程序以及该错误是如何发生的?empployee.component.ts
@component
TypeError: Cannot read property 'push' of undefined
providers :[EmployeeService]
非常感谢您提前。