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

0 投票
1 回答
5160 浏览

angular - Observable BehaviorSubject 服务 - 单例和提供者

我有一个简单的组件progressBar来显示(或不显示)进度条。和一个简单的可观察服务。

这是服务:

false这里没有什么花哨的,只是一个默认设置为 的 BehaviorSubjecthide/show用于更改值.next()

该组件如下所示:

在初始化期间,组件订阅主题以获得默认值并将其设置为isDisplay. showProgress仅用于在我的模板中尝试。

当服务在组件内部使用时,它工作得很好。

但是,当我尝试在另一个组件中调用此服务时,它不起作用。

示例:我的另一个组件称为profilesComponent

我认为这是因为这两个组件不共享相同的服务实例,但我找不到这样做的方法。(也许提供者在@NgModule?)

0 投票
2 回答
2238 浏览

angular - 如何从 Angular 2 中的 observable 提供 LOCALE_ID?

在 Angular 2 中,为了本地化日期管道,您需要提供LOCALE_ID. 我有一个服务LocaleService,它公开了locale$: Observable<string>哪些实现BehaviorSubject<string>. 我不想给这个服务添加任何状态,我希望它是完全被动的。提供时如何从该服务中获取信息LOCALE_ID

0 投票
1 回答
74 浏览

angular - 为什么angular-webpack-stater的例子没有在providers中声明AppState,而是声明了作为服务的Title

代码地址为https://github.com/AngularClass/angular2-webpack-starter/blob/master/src/app/home/home.component.ts

0 投票
1 回答
3266 浏览

ionic2 - Ionic 2:如何在 Controller 类中调用 Provider 函数

我只在我的机器上创建了新的 Cordova 插件。然后我将它添加到我的项目中。当我调用该插件时它工作正常。现在,我尝试为我的插件创建一个结构化的调用者。我为它创建了一个 Provider,但问题是我不知道如何从我的 Controller 类中调用我的插件函数。下面是我的示例代码。

提供者:my-service.ts

页面:my-page.ts

它返回给我这个错误 -Property 'subscribe' does not exist on type 'void'.我不知道如何调用该函数,因为我的提供者返回给我successerror.

0 投票
1 回答
82 浏览

angular - Angular2 Routing-Resolve 接口使用与 OpaqueToken

我想在实例化路由/组件之前获取数据。因此,我想使用 Angular2-Routing-Module 中的“解析器”接口。

看看我的代码。它使用字符串作为提供程序名称,但如果我为提供程序使用 OpaqueToken 则会引发错误。

注意“不工作”的评论。

1 我的(儿童)路线(摘录)。

2 我的模块代码(摘录):

3 我的自定义解析器类(摘录):

不可能用创建的 OpaqueToken(“MyToken” - 当然不带引号)替换字符串(“myResolver”)。不知道为什么。我为多个提供者使用了多个 OpaqueToken,但解析器无法使用它。

控制台中的错误消息如下所示,没有更多信息。

错误:必须定义令牌!

有人知道吗?

0 投票
1 回答
651 浏览

angular - 覆盖组件,如服务?

假设我们导入了 Angular Material 模块之一:

在里面MaterialInput,有一个使用的组件名为:MaterialInputComponent

由于某些原因,我想用自己的组件覆盖该组件

所以我想说:

我知道我们可以覆盖这样的服务,但它也可以用于组件或指令吗?

更新:我不是在寻找组件继承,我想要的是使用类似Material Module但有时我想覆盖它的一些组件行为,就像你对服务所做的那样。

喜欢 :

如果这是 MaterialInput 组件背后的原始代码,它位于我的节点模块中。

我有一个类似的课程:

而且,假设我正在导入孔 MaterialInputModule

那可行吗?

0 投票
1 回答
1800 浏览

jwt - 没有 AuthHttp 提供者!Angular2-Jwt 提供程序问题

至少我认为我提供的是正确的。下面是我的 app.module 文件和我使用 AuthHttp 的服务的相关片段。我按照自述文件中的配置创建了为 AuthHttp 提供的工厂方法,但存在一个持续存在的问题,即在我的服务中无法识别它。我读过关于嵌套依赖注入的文献,我觉得我做的事情是正确的。

app.module.ts

员工服务.ts

0 投票
1 回答
3392 浏览

angular - 在组件类中使用多个提供程序的语法是什么?

我需要在我的组件中使用附加服务。看来我应该可以这样做

但它不起作用。

0 投票
2 回答
619 浏览

angular - 使用 Angular 2+ forRoot 模式将回调传递给模块

我创建了一个名为的 Angular 模块DataModule,其中包含用于通过令牌安全的 HTTP API 访问我的后端的服务。401 Unauthorized关于 HTTP 访问控制错误,例如403 Forbidden我希望能够重定向到/login或尝试刷新令牌等。

我想在 Ionic 应用程序中重新使用它DataModule,所以我不希望与标准@angular/router RouterModule或其他任何东西有任何耦合。

目前,我在导入时通过 forRoot 方法传入一些原始DataModuleAppModule

我需要onError回调才能调用router.navigate('/login')或类似的功能,但由于这是一个简单的配置对象,我认为router现阶段无法注入。

我正在寻找一种方法来传递这样的东西,并且我已经审查了其他几个流行的 ng 项目,例如ngx-translate,angularitics2并且ngx-restangular它们都传递了似乎然后由组件返回的提供程序。这是通过传入实现包中保存的接口的 AuthException 服务或类似服务来实现我所追求的方法DataModule吗?

更新:

我最终从我提到的项目中获得了这个想法,即我DataModule有一个默认的错误处理服务,基本上什么都不做。然后,我在 forRoot 中注入一个特定于应用程序的更好的错误处理类,然后在提供程序中使用它:

ApiServiceFactory的参考:

我还必须使用 anInjectionToken来提供我的配置对象作为工厂的依赖项:

在我的主应用程序中,我执行以下操作:

如果这种方法存在任何潜在问题,很高兴听到任何人的意见。我希望我应该能够在 Ionic 应用程序中使用这个模块,如下所示:

0 投票
1 回答
8641 浏览

angular - Angular:ng build --prod“无法确定类的模块。将类添加到 NgModule 以修复它”

我已将分页逻辑放在一个单独的模块中,并将其导入AppModule. 下面是我的分页模块代码和AppModule.

PagingUtilities 模块:

应用模块:

正如你所看到的,OrderByPipe并且FilterPipe是管道,我在 my 中提供它们,我正在将它们PagingUtilitiesModule导入PagingUtilitiesModule.forRoot()AppModule. 它在文件更改时发生的正常构建中运行良好。但是当我这样做时ng build --prod,它显示了这个错误

ERROR in Error: Cannot determine the module for class OrderByPipe in D:/Projects/AMSSFrontEnd/src/app/shared/paging-utilities/order-by.pipe.ts! Add OrderByPipe to the NgModule to fix it. Cannot determine the module for class FilterPipe in D:/Projects/AMSSFrontEnd/src/app/shared/paging-utilities/filter.pipe.ts! Add FilterPipe to the NgModule to fix it.

请帮我解决一下这个。