Angular中使用forwardRef解决循环引用

291 阅读1分钟

Angular中,forwardRef函数用于解决依赖注入中的循环依赖问题。它允许你引用尚未定义的引用。

以下是一个示例,演示了在Angular中使用forwardRef的情况:

import { Component, Inject, forwardRef } from '@angular/core';

// 服务A
export class ServiceA {
  constructor(@Inject(forwardRef(() => ServiceB)) private serviceB: ServiceB) {}
}

// 服务B
export class ServiceB {
  constructor(@Inject(forwardRef(() => ServiceA)) private serviceA: ServiceA) {}
}

在这个示例中,ServiceAServiceB存在循环依赖。通过使用forwardRef,我们可以在ServiceA中引用ServiceB,在ServiceB中引用ServiceA,即使它们在引用时尚未定义。用forwardRef可以起到一个延迟引用的效果,可以绕过js的解析限制,其实还跟esm循环引用有关