首页 > 解决方案 > 具有工厂功能的角度自定义模块不起作用

问题描述

我正在尝试做一些额外的配置注入,并找到了一些很好的文章来做到这一点,但是,我无法让我的示例正常工作。

首先,我的自定义模块:

@NgModule()
export class AppConfigModule {

  static forRoot(config?: FunkyConfig): ModuleWithProviders {

    return({
      ngModule: AppConfigModule,
      providers: [
        {
          provide: FUNKY_CONFIG,
          useValue: config
        },
        {
          provide: FunkyConfigClass,
          useFactory: appConfigFactory,
          deps: [FUNKY_CONFIG],
          multi: true
        }
      ]
    });
  }
}

这段代码的useFactory一部分永远不会触发。

我的app.config看起来像这样:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { RouterModule, Routes } from '@angular/router';

import { AppComponent } from 'app/app.component';
import { LayoutModule } from 'app/layout/layout.module';
import { TestModule } from 'app/main/test/test.module';
import { AppConfigModule } from './app-config.module';

const appRoutes: Routes = [
    {
        path      : '**',
        redirectTo: 'test'
    }
];

@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule,
        BrowserAnimationsModule,
        HttpClientModule,
        RouterModule.forRoot(appRoutes),

        AppConfigModule.forRoot(),

        // App modules
        LayoutModule,
        TestModule
    ],
    bootstrap: [
        AppComponent
    ]
})
export class AppModule
{
}

在工厂函数中,我目前只有一个调试器;因为我想确保这个代码被命中,但是,什么都没有。

我不明白这是如何工作的吗?

我这样做ng s --watch是为了自动刷新更改。

更新

我没有在我的服务中正确地注入它。感谢大家。

标签: angulartypescript

解决方案


你试过这个吗?

@NgModule()
export declare class AppConfigModule {
  static forRoot(config?: FunkyConfig): ModuleWithProviders;
}

export declare class FunkConfig {
   // your config
}

推荐阅读