forwardRef()
Resolves circular dependencies between providers or modules by deferring reference resolution.
Syntax
forwardRef(() => TypeOrModule) Parameters
| Name | Type | Required | Description |
|---|---|---|---|
fn | () => any | No | A thunk returning the class or module referenced later. |
Returns
ForwardReference — A wrapper Nest resolves once both sides are constructed.
Examples
import { Injectable, Inject, forwardRef } from '@nestjs/common';
@Injectable()
export class CatsService {
constructor(
@Inject(forwardRef(() => DogsService))
private dogs: DogsService,
) {}
}
import { Module, forwardRef } from '@nestjs/common';
import { DogsModule } from './dogs.module';
@Module({ imports: [forwardRef(() => DogsModule)] })
export class CatsModule {}
Notes
Circular dependencies indicate tight coupling and are best avoided by
refactoring. When unavoidable, both the injection site and the matching
module import must use forwardRef().