Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular APP_初始值设定项提供程序将一个注入的服务作为未定义的服务,但其他服务被注入的很好_Angular_Dependency Injection_Angular6_Angular7_Angular8 - Fatal编程技术网

Angular APP_初始值设定项提供程序将一个注入的服务作为未定义的服务,但其他服务被注入的很好

Angular APP_初始值设定项提供程序将一个注入的服务作为未定义的服务,但其他服务被注入的很好,angular,dependency-injection,angular6,angular7,angular8,Angular,Dependency Injection,Angular6,Angular7,Angular8,基本上,我有一个应用程序初始化运行的供应商。一个服务被注入没有问题,但另一个返回未定义。我尝试在它们的两个构造函数上都放一个console.log语句,它们都在我的提供程序之前运行,所以我不知道为什么在我尝试使用它时只有一个未定义 感谢所有的帮助 这是我的密码。如果你需要更多,请告诉我 应用模块 @NgModule({ 声明:[ // ... ], 入口组件:[ // ... ], 进口:[ // ... ], 供应商:[ 应用程序提供商, // ... { 提供:应用程序初始化器, useFa

基本上,我有一个应用程序初始化运行的供应商。一个服务被注入没有问题,但另一个返回未定义。我尝试在它们的两个构造函数上都放一个console.log语句,它们都在我的提供程序之前运行,所以我不知道为什么在我尝试使用它时只有一个未定义

感谢所有的帮助

这是我的密码。如果你需要更多,请告诉我

应用模块

@NgModule({
声明:[
// ...
],
入口组件:[
// ...
],
进口:[
// ...
],
供应商:[
应用程序提供商,
// ...
{
提供:应用程序初始化器,
useFactory:(提供程序:AppProvider)=>()=>provider.load(),
deps:[AppProvider],
多:真的
}],
引导:[AppComponent]
})
导出类AppModule{
}
应用程序提供商

@Injectable({providedIn:'root'})
导出类AppProvider{
建造师(
// ...
私人参与服务:参与服务,
专用DST服务:DST服务){
}
加载(){
//...
console.log(participantService);//打印未定义
console.log(dstService);//打印服务
// ...
返回承诺。解决();
}
}
参与服务

@Injectable({providedIn:'root'})
导出类参与服务{
// ...
构造函数(私有http:HttpClient,
// ...
专用路由器(路由器){
}
// ...
}
数据传输服务

@Injectable({providedIn:'root'})
导出类服务{
// ...
构造函数(私有http:HttpClient,
私人参与服务:参与服务,
// ...
专用路由器(路由器){
}
// ...
}

提前谢谢

很抱歉误导您<代码>注入函数似乎只注入令牌。因此,我们可以使用
INJECTOR
token将服务注入器注入到令牌中。所以它变成了这样:

import { SOME_TOKEN } from "./token";
import { NgModule, inject, INJECTOR } from "@angular/core";

@NgModule({
  imports: [BrowserModule, FormsModule],
  declarations: [AppComponent, HelloComponent],
  bootstrap: [AppComponent],
  providers: [
    HelloService,
    {
      provide: SOME_TOKEN,
      useFactory: () => {
        return inject(INJECTOR)
          .get(HelloService)
          .getHello();
      }
    }
  ]
})
export class AppModule {}

以下是工作示例。

尝试以下操作:
{provide:APP\u初始值设定项,useFactory:()=>inject(AppProvider).load(),multi:true}
错误:inject()必须从注入上下文调用此问题的任何解决方案?面对相同的问题,我向列表中添加了一个空服务,该服务不做任何操作,但首先加载。这有助于我的场景,但我想知道为什么应用程序\u引导\u侦听器不适合here@javapedia.net抢手货原因是我在发帖的时候没有想到。但是,由于
APP\u BOOTSTRAP\u LISTENER
提供了一个回调函数,可以为每个引导组件运行。在引导过程之后调用回调。所以它可能仍然不合适。