|
1 | | -import { NgModule, ModuleWithProviders, InjectionToken } from "@angular/core"; |
| 1 | +import { NgModule, ModuleWithProviders, InjectionToken, Optional } from "@angular/core"; |
2 | 2 |
|
3 | 3 | import { CommandDirective } from "./command.directive"; |
4 | 4 | import { CommandRefDirective } from "./command-ref.directive"; |
5 | 5 | import { CommandOptions, COMMAND_DEFAULT_CONFIG, COMMAND_CONFIG } from "./config"; |
6 | 6 |
|
7 | 7 | /** @internal */ |
8 | | -export const _MODULE_CONFIG = new InjectionToken<CommandOptions>("_command-config"); |
| 8 | +export const MODULE_CONFIG_DATA = new InjectionToken<CommandOptions>("@ssv/ngx.command/configData"); |
| 9 | + |
| 10 | +const components = [ |
| 11 | + CommandDirective, |
| 12 | + CommandRefDirective |
| 13 | +]; |
9 | 14 |
|
10 | 15 | @NgModule({ |
11 | | - declarations: [CommandDirective, CommandRefDirective], |
12 | | - providers: [{ provide: COMMAND_CONFIG, useValue: COMMAND_DEFAULT_CONFIG }], |
13 | | - exports: [CommandDirective, CommandRefDirective], |
| 16 | + declarations: components, |
| 17 | + providers: [ |
| 18 | + { provide: COMMAND_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] }, |
| 19 | + ], |
| 20 | + exports: [...components], |
14 | 21 | }) |
15 | 22 | export class SsvCommandModule { |
16 | 23 |
|
17 | 24 | static forRoot(config?: Partial<CommandOptions> | (() => Partial<CommandOptions>)): ModuleWithProviders<SsvCommandModule> { |
18 | 25 | return { |
19 | 26 | ngModule: SsvCommandModule, |
20 | 27 | providers: [ |
21 | | - { |
22 | | - provide: COMMAND_CONFIG, |
23 | | - useFactory: moduleConfigFactory, |
24 | | - deps: [_MODULE_CONFIG], |
25 | | - }, |
26 | | - { provide: _MODULE_CONFIG, useValue: config }, |
| 28 | + { provide: MODULE_CONFIG_DATA, useValue: config }, |
27 | 29 | ], |
28 | 30 | }; |
29 | 31 | } |
30 | 32 |
|
31 | 33 | } |
32 | 34 |
|
33 | 35 | /** @internal */ |
34 | | -export function moduleConfigFactory(config: CommandOptions | (() => CommandOptions)): CommandOptions { |
| 36 | +export function _moduleConfigFactory(config: CommandOptions | (() => CommandOptions)): CommandOptions { |
35 | 37 | const cfg = typeof config === "function" ? config() : config; |
36 | 38 | return cfg |
37 | 39 | ? { |
|
0 commit comments