将角度类型<any>存储在Array中

时间:2017-09-15 10:47:37

标签: angular typescript

我的目标是存储组件引用,例如在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&lt; - RouteInjectorService&lt; - EventListPageComponent&lt; - ...

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

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

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

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

0 个答案:

没有答案