Javascript angular 4服务构造函数问题

Javascript angular 4服务构造函数问题,javascript,angular,angular-httpclient,Javascript,Angular,Angular Httpclient,我的authservice有问题。如果我在构造函数中发出http请求,它会被调用259次。 如果我删除http调用,它将被调用一次。我使用共享模块来提供该服务的唯一实例 角度版本:4.4.4 这是我的共享模块: 导出常量提供程序=[ AuthService, 数据存储服务, ]; @NGD模块{ 进口:[ 公共模块, FormsModule, HttpClientModule, 反应形式模块, 无限滚动模块, 截断模 ], 声明:[ 页脚组件, 感光元件, GalleryListCompone

我的authservice有问题。如果我在构造函数中发出http请求,它会被调用259次。 如果我删除http调用,它将被调用一次。我使用共享模块来提供该服务的唯一实例

角度版本:4.4.4

这是我的共享模块:

导出常量提供程序=[ AuthService, 数据存储服务, ]; @NGD模块{ 进口:[ 公共模块, FormsModule, HttpClientModule, 反应形式模块, 无限滚动模块, 截断模 ], 声明:[ 页脚组件, 感光元件, GalleryListComponent, ], 出口:[ 页脚组件, 感光元件, GalleryListComponent, 无限滚动模块, ], 供应商:[ ]} 导出类共享模块{ 静态forRoot:ModuleWithProviders{ 返回{ ngModule:SharedModule, 提供者:[……提供者] }; }
} 创建一个core/core.module.ts,在其中在app.module.ts中导入一次

import { CommonModule } from '@angular/common';
import {
  ModuleWithProviders, NgModule,
  Optional, SkipSelf
} from '@angular/core';


import { AuthGuard } from '../guards/auth.guard';
import { AuthService } from '../services/auth.service';

@NgModule({
  imports: [CommonModule],
  declarations: [],
  exports: [],
  providers: [AuthGuard, AuthService]
})

export class CoreModule {

  constructor( @Optional() @SkipSelf() parentModule: CoreModule) {
    if (parentModule) {
      throw new Error(
        'CoreModule is already loaded. Import it in the AppModule only');
    }
  }

  static forRoot(): ModuleWithProviders {
    return {
      ngModule: CoreModule,
      providers: [
        AuthService,
        AuthGuard,
      ]
    };
  }
}
import {CoreModule} from './core/core.module';

@NgModule({
  declarations: [
  ],
  imports: [
    CoreModule.forRoot(),
  ],
  providers: [

  ],
  bootstrap: [AppComponent]
})
有一个检查,以确保它只加载一次

app.module.ts

import { CommonModule } from '@angular/common';
import {
  ModuleWithProviders, NgModule,
  Optional, SkipSelf
} from '@angular/core';


import { AuthGuard } from '../guards/auth.guard';
import { AuthService } from '../services/auth.service';

@NgModule({
  imports: [CommonModule],
  declarations: [],
  exports: [],
  providers: [AuthGuard, AuthService]
})

export class CoreModule {

  constructor( @Optional() @SkipSelf() parentModule: CoreModule) {
    if (parentModule) {
      throw new Error(
        'CoreModule is already loaded. Import it in the AppModule only');
    }
  }

  static forRoot(): ModuleWithProviders {
    return {
      ngModule: CoreModule,
      providers: [
        AuthService,
        AuthGuard,
      ]
    };
  }
}
import {CoreModule} from './core/core.module';

@NgModule({
  declarations: [
  ],
  imports: [
    CoreModule.forRoot(),
  ],
  providers: [

  ],
  bootstrap: [AppComponent]
})
其在核心模块下的文档中引用为单例
< /p>这种情况下,ES6类或TypeScript的构造函数方法是类本身的特性,而不是角度特征:考虑使用构造函数主要用于依赖注入,使用NGuniTITE逻辑不在服务上调用…这不起作用。是一样的。。您试图在内部发出http请求吗?需要声明的http客户端?