Angular 5 APP_INITIALIZER导致Cylic Dependency

时间:2018-02-12 02:51:26

标签: angular angular5 cyclic-dependency

类似于Angular 5 APP_INITIALIZER gives Cyclic dependency error

我有一个使用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!我尝试添加超时并注入它,但这没有用。

2 个答案:

答案 0 :(得分:0)

是的,所以问题是HttpClient。

我把它换成了来自&#34; @ angular / http&#34;的旧{Http};在@NgModule中导入模块,它可以工作。

答案 1 :(得分:0)

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