Angular 5 APP_INITIALIZER导致Cylic依赖



类似于Angular 5 APP_INITIALIZER给出循环依赖性错误

我有一个使用Angular 5和SSR的应用程序,我刚刚从Angular 4升级了它,一切都很好。

现在,当我使用APP_INITIALIZER时,我会收到上面提到的错误。我环顾四周,我能找到的最好的是需要注入路由器,但我不使用路由器!任何关于这方面的指导都将是伟大的,提前感谢!

这是代码:

在我的提供商中,并且功能:-

SettingsProvider,
{ provide: APP_INITIALIZER, useFactory: settingsProviderFactory, deps: [SettingsProvider], multi: true }
export function settingsProviderFactory(provider: SettingsProvider) {
return () => provider.load();
}

服务:

import { HttpClient } from "@angular/common/http";
import { Injectable } from "@angular/core";
import { Subject } from "rxjs";
import { ConfigSetting } from "../../models/config.model";

@Injectable()
export class SettingsProvider {
private settings: any = null;
private baseUrl: string;
public subject: Subject<any> = new Subject();
constructor(private http: HttpClient) {
}
load() {
return new Promise((resolve, reject) => {
this.http
.get('http://localhost:54601/api/configuration')
.subscribe(response => {
this.settings = response;
resolve(true);
console.log(response)
})
})
}
public getEventSetting(): boolean {
return true /*this.settings['events'];*/
}
public getReviewSetting(): boolean {
return true /*this.settings['reviews'];*/
}
public updateSettings(settings: ConfigSetting): void {
this.settings = settings;
this.subject.next();
}
}

编辑:好的,我可能错了,但看起来可能与HttpClient有关。我去掉了它,它似乎起作用了。。。我可以给控制台发个消息。不过我需要http!我尝试添加一个超时并注入它,但没有成功。

没错,所以问题是HttpClient。

我把它换成了"@angular/Http"中的旧{Http};在@NgModule中导入了该模块,它就工作了。

使用app.browser.module而不是共享app.module 解决了问题

相关内容

  • 没有找到相关文章

最新更新