0

我有三个模块,一个组合模块,一个身份验证模块和一个记录请求模块。recordrequest 模块需要将 ValuesService 用作单例。我在使用 for root 的身份验证服务中返回一个带有提供程序的模块,并在声明 ValuesService 的提供程序中。然后在 CompositionModule 中导入 AuthModule.forRoot()。这应该在 DI 树中导入 ValuesService 并可供 recordsrequest 模块使用。相反,我看到“没有 ValuesService 的提供者!”

有人可以检查一下他们是否可以发现代码中的错误。如果需要,我可以包括其他部分。

作曲模块

NgModule({
imports: [
    BrowserModule,
    BrowserAnimationsModule,
    HttpModule,
    FormsModule,
    MaterialModule.forRoot(),
    AuthModule.forRoot(),
    HttpInterceptorModule,
    RouterModule.forRoot(routes),
    PubSubModule.forRoot(),
    RecordRequestQueueModule
],
providers:
[
    SecurityService,
    RoleGaurd
],
declarations: [
    AuthComponent,
    AppComponent,
    NavMenuComponent,
    RoutingRedirectComponent,
    HomeComponent
],
bootstrap:
[
    AppComponent
]
})
export class CompositionModule {
}

记录请求队列模块

@NgModule({
imports: [
    AuthModule,
    CommonModule,
    MaterialModule,
    HttpModule,
    FormsModule,
    RouterModule.forChild(recordRequestQueueRoutes)
],
exports: [
    RouterModule
],
declarations: [
    RecordRequestingQueueComponent,
    RecordRequestingWorkItem,
    RecordRequestingQueueSection
],
providers: [
    QueueClient
]
})

export class RecordRequestQueueModule {
constructor(valuesService: ValuesService) {
    console.log("Record Request Queue loaded.");
}
}

认证模块

@NgModule({
imports: [
    CommonModule,
    HttpModule,
    MaterialModule,
    FormsModule
],
declarations: [
    LoginComponent,
    LogoutComponent],
providers: [
    LoginClient
],
exports: [
    LogoutComponent,
    LoginComponent
]
})
export class AuthModule {
static forRoot(): ModuleWithProviders {
    return {
        ngModule: AuthModule,
        providers: [ValuesService]
    };
}
constructor() {
    console.log("Auth module loaded");
}
}

价值观服务

import { Injectable } from '@angular/core';


@Injectable()
export class ValuesService {
public username: string;
}
4

0 回答 0