问题标签 [angular-di]

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 回答
20188 浏览

angular - “this.appInits[i]”不是函数

我正在尝试使用 APP_INITIALIZER 从配置文件加载数据。我收到以下错误:

“未处理的承诺拒绝:this.appInits[i] 不是函数;区域:;任务:Promise.then;值:TypeError:this.appInits[i] 不是函数”

代码:

对我做错了什么有帮助吗?

编辑:

亚当的解决方案修复了最初的错误。但现在我看到一个新错误:

TypeError:无法设置未定义的属性“urlList”

据我了解,没有创建 ApiConfig 实例。但是我在 Angular 中加载配置文件时看到的所有示例都给出了相同的示例。我想知道如何强制创建 ApiConfig 类。以及如何使它成为单例?下面是 ApiConfig 的用法。

答: 上面代码中创建承诺的方式似乎存在问题。我修改了链接中给出的 loadconfig() 方法:https ://gist.github.com/fernandohu/122e88c3bcd210bbe41c608c36306db9这解决了我的问题。

0 投票
4 回答
16760 浏览

angular - 如何更新依赖注入令牌值

Angular 依赖注入允许您使用令牌而不是服务类来注入字符串、函数或对象。

我在我的模块中声明它是这样的:

我像这样使用它:

但是,如何更新组件的值并让其他组件每次都获取新值?换句话说,我想模拟使用类似 a 的东西BehaviorSubject来发出和接收值的功能。

如果这是不可能的,那么如果它们只提供静态数据,那么这些注入令牌值的用途是什么,因为我可以简单地在我的组件中声明静态值并直接使用它。

0 投票
1 回答
258 浏览

angular - 带有 AOT 的 Angular 4 注入控制台

此代码在使用提前编译的开发模式下失败。

如何注入控制台?

0 投票
1 回答
208 浏览

angular - Angular 4 DI:等待方法完成

为了避免循环依赖,我使用Injector注入AuthService但是当我运行应用程序 Angularintercept()在设置属性之前执行该方法authService!!!

在此处输入图像描述

0 投票
1 回答
669 浏览

angular - 无法解析组件的所有参数

我正面临这个非常普遍的问题。试图向组件注入服务。但是得到这个 Can't resolve all parameters for VehicleComponent 错误。不知道为什么会这样。尝试将@Inject 放在依赖参数上,尝试在其他模块中提供,在组件本身中提供但没有用。试图注入 NavigationControllerService。顺便说一句,我可以将服务注入我的应用程序组件。

这是我的应用程序模块。这里提供服务

车辆模块

和我试图注入的车辆组件。

您可以从这里访问完整项目https://github.com/aliemre1990/dokuzisik-mean 感谢您的帮助。

编辑:我认为问题是由 NavigationControllerService 引起的。我创建了一个空的服务类并在我的 AppModule 上提供它,以使相同的服务实例在整个应用程序中可用。在车辆组件上,此空服务按预期注入。但在我看来,navigationcontrollerservice 再次无法创建,也无法注入。我应该调查为什么它不能创建导航控制器服务的实例。也许它关于其构造函数中提供的依赖项。我也在提供我的导航控制器服务。

再次编辑:我将我的项目转移到 angular-cli,它给出了循环依赖警告。我的 vehicleCompnent 依赖于 navigationController 并且 navigationController 使用了 vehicleComponent。从导航控制器中删除车辆组件解决了这个问题。

0 投票
7 回答
10025 浏览

angular - 在 APP_INITIALIZER 承诺解决之前构建 Angular (v5) 服务

我希望 Angular 等到我的loadConfig()函数解决后再构建其他服务,但事实并非如此。

app.module.ts

}

应用程序.config.ts

其他一些服务.ts

的构造函数SomeOtherService在从服务器接收到数据之前被调用。这是一个问题,因为其中的字段SomeOtherService没有设置为正确的值。

如何确保SomeOtherService' 的构造函数仅在loadConfig' 的请求得到解决后才被调用?

0 投票
1 回答
195 浏览

angular - 基类解析器的组件继承和 DI

我有不同类型的组件,但共享一些通用算法。所以我决定在 Angular 中使用组件继承并尝试使用模板方法模式。

基本上,我需要对某些方法进行不同的实现。

基础组件

子组件 - A 型

ChildA.component.html

它使用父组件字段和方法。还嵌入了依赖于父组件的通用消息模板。

嵌入在 ChildA.component 中的 MessageComponent

消息.html

问题:

当我在任何子类型中嵌入消息组件时,例如 ChildA、ChildB,我无法在 Message 组件中指定正确的派生类 @Host。所以依赖解析器提供了一个错误No provider for ComponentBase

我用来@Host访问包含的父组件的方法。它们中的大多数都在抽象组件中。

我们需要使用ComponentFactoryResolver吗?或者我们可以尝试其他方式来代替主机?

0 投票
0 回答
70 浏览

angular - 获取父 Angular 组件引用的正确方法是什么?

我尝试基于组件树获取子组件对其父 Angular 组件的引用。这样做的正确方法是什么?我发现injector.view实际上是我正在寻找的参考,但这个 API 没有记录。

注意:为什么我需要这个。我将 Angular 与画布渲染库混合在一起。孩子实际上会将父母视为 AbstractComponent 它不关心其父母的具体类。由于我在 Angular 的组件树之上构建了一个并行画布显示树,并且孩子需要将它自己添加到父画布容器中。

我正在尝试向 ChildComponent 中注入对 ParentComponent 的引用。

例子:

0 投票
0 回答
33 浏览

javascript - Angular DI useFactory() 上下文从何而来?

使用 angular(根据本文useFactory()可用于添加决策,以决定在 DI 期间为组件提供什么。这是文章中的一个示例:

我的问题是 if 块的上下文来自哪里?由于组件尚未创建,因此它不能是组件状态......如果看到一个更具体的例子会很高兴......想法?

0 投票
1 回答
2628 浏览

angular - 如何提供另一个控制值访问器?

我已经有了一个实现ControlValueAccessor接口的指令(指令的选择器是input[type=date]),我需要另一个ControlValueAccessor用选择器实现的指令input[type=date][datepicker]——我们称之为 datepicker 指令。

如您所见,这些指令的选择器相互覆盖,当我使用 datepicker 指令时出现以下错误:

错误在那里抛出:https ://github.com/angular/angular/blob/5.2.x/packages/forms/src/directives/shared.ts#L206

所以我有一个想法,也许我可以以某种方式告诉 angular 在可能的情况下提供 datepicker 指令,但是该怎么做呢?