问题标签 [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.

0 投票
1 回答
2649 浏览

angular - angular 4 http拦截器:工厂没有被调用

我正在尝试将拦截器添加到我的 Angular 4 应用程序中。

我有以下拦截器代码

我在 app.module 中使用如下

以下是我正在使用的模块版本

但是没有一个调试器语句被命中。有人可以帮我吗?如果我将它注入任何组件,它会显示错误为“没有连接后端的提供者”。提前致谢。

0 投票
1 回答
26 浏览

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 东西。关于在哪里看的任何建议?

提前致谢!

0 投票
1 回答
6611 浏览

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,它工作正常。

发布解决方案后,我看到重复的行:

在此处输入图像描述

0 投票
0 回答
52 浏览

angular - Angular (2/4) 类似于 Symfony (2/3) 标记的服务

我正在尝试实现类似于 Symfony 的标记服务的东西。

它将用于什么:我想将“选民”复制到我的前端逻辑中(是的,我知道前端技术不会给我 100% 确定真正的许可,这就是我需要这种逻辑的原因“翻译”后端到前端)。

我想要获得的成功:一个包含配置服务数组的signle服务(通过构造函数、setter或其他方式)。最好也可以使用forChild静态方法在任何子模块中使用此模块,因此该服务将包含来自主模块和子模块的投票者。

到目前为止我所做的:我在我的模块中创建了一个提供程序

然后,我创建了PermissionCheckerServiceIsGrantedComponent

不知何故,我设法将PermissionCheckerService的实例放入我的IsGrantedComponent但我不明白,为什么选民数组是空的,即使我确实按如下方式提供它们:

恐怕我在某处误解了文档(正在阅读文档并试图比较来自 3rd 方库的“相似”逻辑)。

0 投票
3 回答
12757 浏览

angular - Angular 异步工厂提供程序

我想建立一个执行异步工作以返回服务的工厂,然后将该工厂提供给工厂提供者,以便在组件加载时将该服务提供给组件。

但是,当提供程序将 注入 时TestServiceTestComponent运行时的类型是ZoneAwarePromise. 我需要一种方法让提供者在将服务注入组件之前自动“等待”承诺。

服务

供应商和工厂

应用模块

测试组件

0 投票
1 回答
199 浏览

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 上看到)

0 投票
1 回答
1413 浏览

angular - 一个应用程序中的多个 ngrx 存储

我们是大型 Angular 应用程序模块的开发人员。模块是相互独立的,它们是由不同的团队开发的。我们想在我们的模块中使用一个 ngrx 存储。

另一个模块已经有一个 ngrx 存储。如果我尝试以通常的方式将商店添加到我们的 module.ts 中:

它破坏了整个应用程序。有没有办法为我们的模块提供单独的存储?

(应用程序使用ngrx2)

0 投票
2 回答
2638 浏览

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.tsC.module.ts以共享相同的提供者“内存”为目标(如果提供者包含一个值,则 B 和 C 都应该看到同一个对象),我将如何分别编码?只需“像往常一样”注入提供者,然后用角度来完成其余的工作吗?

提前谢谢任何帮助,将不胜感激

更新

不确定我是否正确理解了角度文档,但这是目标,应该为所有应用程序加载提供程序,对吗?

https://angular.io/guide/ngmodule-faq#q-component-scoped-providers

2018 年更新

注入策略随着 Angular v6 的引入而发展。根据文档,可以providedIn指定应该在哪个模块中使用服务。见https://angular.io/guide/dependency-injection

0 投票
1 回答
28 浏览

javascript - 子组件中的子服务在父组件中是否可见?

假设我有一个 app 文件夹,它是我的应用程序的根文件夹。

如果我现在在 app 文件夹中有一个名为“second”的子文件夹(app 是父文件夹,子文件夹是“second”),那么该子文件夹也有服务并在他自己的模块提供父文件夹,如果我在app.component.ts中使用服务(从子文件夹导入)并使用它的字段、方法,还是仅在子文件夹中可见而在其他任何地方都不可见?

0 投票
1 回答
34 浏览

html - Angular Providers 做什么以及如何使用它?

我是 Angular 的新手。我遵循此链接中的教程,并尝试执行/添加不属于该教程的内容。我在里面加了providers :[EmployeeService]一行employee-list.component.ts,它返回错误说。所以要意识到添加一些组件是不必要的。我从这个链接中读到了依赖注入,但我并没有真正得到我想知道的东西。那么谁能给我一个简单的解释如何/何时/在哪里使用/放置提供程序以及该错误是如何发生的?empployee.component.ts@componentTypeError: Cannot read property 'push' of undefinedproviders :[EmployeeService]

非常感谢您提前。