我的目标是存储组件引用,例如在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路由器系统中完成一样?