问题标签 [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.
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这解决了我的问题。
angular - 如何更新依赖注入令牌值
Angular 依赖注入允许您使用令牌而不是服务类来注入字符串、函数或对象。
我在我的模块中声明它是这样的:
我像这样使用它:
但是,如何更新组件的值并让其他组件每次都获取新值?换句话说,我想模拟使用类似 a 的东西BehaviorSubject
来发出和接收值的功能。
如果这是不可能的,那么如果它们只提供静态数据,那么这些注入令牌值的用途是什么,因为我可以简单地在我的组件中声明静态值并直接使用它。
angular - 带有 AOT 的 Angular 4 注入控制台
此代码在使用提前编译的开发模式下失败。
如何注入控制台?
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。从导航控制器中删除车辆组件解决了这个问题。
angular - 在 APP_INITIALIZER 承诺解决之前构建 Angular (v5) 服务
我希望 Angular 等到我的loadConfig()
函数解决后再构建其他服务,但事实并非如此。
app.module.ts
}
应用程序.config.ts
其他一些服务.ts
的构造函数SomeOtherService
在从服务器接收到数据之前被调用。这是一个问题,因为其中的字段SomeOtherService
没有设置为正确的值。
如何确保SomeOtherService
' 的构造函数仅在loadConfig
' 的请求得到解决后才被调用?
angular - 基类解析器的组件继承和 DI
我有不同类型的组件,但共享一些通用算法。所以我决定在 Angular 中使用组件继承并尝试使用模板方法模式。
基本上,我需要对某些方法进行不同的实现。
基础组件
子组件 - A 型
ChildA.component.html
它使用父组件字段和方法。还嵌入了依赖于父组件的通用消息模板。
嵌入在 ChildA.component 中的 MessageComponent
消息.html
问题:
当我在任何子类型中嵌入消息组件时,例如 ChildA、ChildB,我无法在 Message 组件中指定正确的派生类
@Host
。所以依赖解析器提供了一个错误No provider for ComponentBase
。
我用来@Host
访问包含的父组件的方法。它们中的大多数都在抽象组件中。
我们需要使用ComponentFactoryResolver吗?或者我们可以尝试其他方式来代替主机?
angular - 获取父 Angular 组件引用的正确方法是什么?
我尝试基于组件树获取子组件对其父 Angular 组件的引用。这样做的正确方法是什么?我发现injector.view实际上是我正在寻找的参考,但这个 API 没有记录。
注意:为什么我需要这个。我将 Angular 与画布渲染库混合在一起。孩子实际上会将父母视为 AbstractComponent 它不关心其父母的具体类。由于我在 Angular 的组件树之上构建了一个并行画布显示树,并且孩子需要将它自己添加到父画布容器中。
我正在尝试向 ChildComponent 中注入对 ParentComponent 的引用。
例子:
javascript - Angular DI useFactory() 上下文从何而来?
使用 angular(根据本文)useFactory()
可用于添加决策,以决定在 DI 期间为组件提供什么。这是文章中的一个示例:
我的问题是 if 块的上下文来自哪里?由于组件尚未创建,因此它不能是组件状态......如果看到一个更具体的例子会很高兴......想法?
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 指令,但是该怎么做呢?