我的目标是存储组件引用,例如它在Angular路由中完成,但在我自己的服务中,例如

@Injectable()
export class RouteInjectorService {

    getRoutes() {
        return [
            { path: ['event-list'], component: EventListPageComponent },
            { path: ['404'], component: NoContentComponent },
            { path: ['offer'], component: OfferPageComponent },
        ];
    }
}

问题是,当我将RouteInjectorService注入任何组件时,我得到循环依赖性错误:

Can't resolve all parameters for EventListPageComponent: ([object Object], [object Object], [object Object], [object Object], [object Object], ?).

? 是我的RouteInjectorService . 我的猜测是

{ path: ['event-list'], component: EventListPageComponent }

尝试使用其所有deps构造组件,创建循环:EventListPageComponent < - RouteInjectorService < - EventListPageComponent < - ...

将组件存储在单独的const中会导致相同的错误 . 我的想法是,我应该包括某种装卸卫士或其他东西 . 此外,将getRoutes()放入任何组件(如AppComponent的ngOnInit())都可以正常工作 . 或者,放置

constructor(
    @Inject(forwardRef(() => RouteInjectorService))private router: RouteInjectorService
) {}

进入组件工作,但将forwardRef放入所有那些需要RouteInjectorService的组件是相当痛苦的 . 我想知道是否有更好的方法 .

所以问题是,如何在没有过多初始化的情况下将组件存储在数组中,就像在Angular路由器系统中完成的那样?