|  | 
| 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