我正在尝试检索我的APP_INITIALIZER
中网址中的数据app.module.ts
export function init(config: ConfigService, router: Router) {
return () => config.load(router);
}
providers : [
...
{
provide: APP_INITIALIZER,
useFactory: init,
deps: [ConfigService, Router],
multi: true
},
ConfigService
...
]
配置-service.ts
@Injectable()
export class ConfigService
load(router: Router): Promise<any> {
console.log('current url : ' + router.url);
return new Promise(((resolve, reject) => resolve()));
}
}
不幸的是我得到了
Cannot instantiate cyclic dependency! ApplicationRef ("[ERROR ->]"): in NgModule AppBrowserModule in ./AppBrowserModule@-1:-1
我也尝试在构造函数中使用Injector
,但它也没有用。
我想做的甚至是可行的吗?
答案 0 :(得分:3)
config-service.ts可以如下重写。
@Injectable()
export class ConfigService
constructor(private injector: Injector){}
load(): Promise<any> {
const router = this.injector.get(Router);
console.log('current url : ' + router.url);
return new Promise(((resolve, reject) => resolve()));
}
}
无需将Router作为依赖添加到app.module.ts中。
答案 1 :(得分:2)
我尝试做的事情是不可行的,因为APP_INITIALIZER发生在路由器init之前。 Creating an ebook with pandoc