Javascript angular 4服务构造函数问题
我的authservice有问题。如果我在构造函数中发出http请求,它会被调用259次。 如果我删除http调用,它将被调用一次。我使用共享模块来提供该服务的唯一实例 角度版本:4.4.4 这是我的共享模块: 导出常量提供程序=[ AuthService, 数据存储服务, ]; @NGD模块{ 进口:[ 公共模块, FormsModule, HttpClientModule, 反应形式模块, 无限滚动模块, 截断模 ], 声明:[ 页脚组件, 感光元件, GalleryListComponent, ], 出口:[ 页脚组件, 感光元件, GalleryListComponent, 无限滚动模块, ], 供应商:[ ]} 导出类共享模块{ 静态forRoot:ModuleWithProviders{ 返回{ ngModule:SharedModule, 提供者:[……提供者] }; }Javascript angular 4服务构造函数问题,javascript,angular,angular-httpclient,Javascript,Angular,Angular Httpclient,我的authservice有问题。如果我在构造函数中发出http请求,它会被调用259次。 如果我删除http调用,它将被调用一次。我使用共享模块来提供该服务的唯一实例 角度版本:4.4.4 这是我的共享模块: 导出常量提供程序=[ AuthService, 数据存储服务, ]; @NGD模块{ 进口:[ 公共模块, FormsModule, HttpClientModule, 反应形式模块, 无限滚动模块, 截断模 ], 声明:[ 页脚组件, 感光元件, GalleryListCompone
} 创建一个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客户端?