forwardRef
Позволяет ссылаться на сущности, которые ещё не определены.
API
function forwardRef(forwardRefFn: ForwardRefFn): Type<any>;
@returns
Type<any>
Описание
Позволяет ссылаться на сущности, которые ещё не определены.
Например, forwardRef используется, когда token, на который нужно сослаться для целей DI, объявлен, но ещё не определён. Он также используется, когда token, который используется при создании запроса, ещё не определён.
forwardRef также используется для устранения циклических зависимостей в импортах автономных компонентов.
Примечания по использованию
Пример циклической зависимости
@Injectable()
class Door {
lock: Lock;
// Door attempts to inject Lock, despite it not being defined yet.
// forwardRef makes this possible.
constructor(@Inject(forwardRef(() => Lock)) lock: Lock) {
this.lock = lock;
}
}
// Only at this point Lock is defined.
class Lock {}
const injector = Injector.create({
providers: [
{provide: Lock, deps: []},
{provide: Door, deps: [Lock]},
],
});
expect(injector.get(Door) instanceof Door).toBe(true);
expect(injector.get(Door).lock instanceof Lock).toBe(true); Пример циклического импорта ссылки на автономный компонент
@Component({
imports: [ChildComponent],
selector: 'app-parent',
template: `<app-child [hideParent]="hideParent()"/>`,
})
export class ParentComponent {
hideParent = input.required<boolean>();
}
@Component({
imports: [forwardRef(() => ParentComponent)],
selector: 'app-child',
template: `
@if(!hideParent()) {
<app-parent/>
}
`,
})
export class ChildComponent {
hideParent = input.required<boolean>();
}
Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/core/forwardRef