Stratal API Reference
    Preparing search index...

    Interface ModuleClass<T>

    Module class type (decorated with @Module)

    Static methods for dynamic module configuration:

    • withRoot: Synchronous configuration (like NestJS forRoot)
    • withRootAsync: Async configuration with factory (like NestJS forRootAsync)
    interface ModuleClass<T extends object = object> {
        new ModuleClass(...args: any[]): T;
        withRoot?: (...args: unknown[]) => DynamicModule;
        withRootAsync?: <TOptions>(
            options: AsyncModuleOptions<TOptions>,
        ) => DynamicModule;
    }

    Type Parameters

    • T extends object = object

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    Constructors

    Properties

    withRoot?: (...args: unknown[]) => DynamicModule

    Synchronous module configuration

    Use for global singleton modules with static configuration

    @Module({ providers: [] })
    export class ConfigModule {
    static withRoot(options: ConfigOptions): DynamicModule {
    return {
    providers: [
    { provide: CONFIG_TOKEN, useValue: options }
    ]
    }
    }
    }

    // Usage in AppModule
    @Module({ imports: [ConfigModule.withRoot({ apiKey: '...' })] })
    withRootAsync?: <TOptions>(
        options: AsyncModuleOptions<TOptions>,
    ) => DynamicModule

    Async module configuration with dependency injection

    Use when configuration depends on other services

    @Module({ providers: [] })
    export class DatabaseModule {
    static withRootAsync<T>(options: AsyncModuleOptions<T>): DynamicModule {
    return {
    providers: [
    {
    provide: DB_TOKEN,
    useFactory: options.useFactory,
    inject: options.inject
    }
    ]
    }
    }
    }

    // Usage in AppModule
    @Module({
    imports: [
    DatabaseModule.withRootAsync({
    inject: [CONFIG_TOKEN],
    useFactory: (config) => ({ url: config.databaseUrl })
    })
    ]
    })