Spec-Zone.ru › Angular

forwardRef

Позволяет ссылаться на сущности, которые ещё не определены.

Разрешение циклических зависимостей с помощью опережающей ссылки

API

function forwardRef(forwardRefFn: ForwardRefFn): Type<any>;
@paramforwardRefFnForwardRefFn
@returnsType<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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API