Ошибка разбора: циклическая зависимость в инициализаторе приложения - PullRequest
0 голосов
/ 23 октября 2018

Я реализую инициализатор приложения, и я столкнулся с ошибкой циклической зависимости, как показано ниже

Uncaught Error: ошибки синтаксического анализа провайдера: невозможно создать экземпляр циклической зависимости!ApplicationRef ("[ERROR ->]"): в NgModule AppModule в ./AppModule@-1:-1 в NgModuleProviderAnalyzer.push ../ node_modules/@angular/compiler/fesm5/compiler.js.NgModuleProviderAnalyzer.parse (компилятор.js: 11472) по адресу NgModuleCompiler.push ../ node_modules/@angular/compiler/fesm5/compiler.js.NgModuleCompiler.compile (compiler.js: 11836) по адресу JitCompiler.push ../ node_modules / @ angular / compiler / fesm5 /compiler.js.JitCompiler._compileModule (compiler.js: 23882) в compiler.js: 23841 в Object.then (compiler.js: 1007) в JitCompiler.push ../ node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._compileModuleAndComponents (compiler.js: 23839) в JitCompiler.push ../ node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler.compileModuleAsync (compiler.js: 23799) в CompilerImpl.plus ..@ angular / platform-browser-dynamic / fesm5 / platform-browser-dynamic.js.CompilerImpl.compileModuleAsync (platform-browser-dynamic.js: 143) в PlatformRef.push ../ node_modules / @ angular / core / fesm5 / core.js.PlatformRef.bootstrapModule (core.js: 4352) в Object ../ src / main.ts (main.ts: 11) push ../ node_modules/@angular/compiler/fesm5/compiler.js.NgModuleProviderAnalyzer.parse @ compiler.js: 11472 push ../ node_modules/@angular/compiler/fesm5/compiler.js.NgModuleCompiler.compile @ compiler.js: 11836 push ../ node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._compileModule @ compiler.js: 23882 (анонимно) @ compiler.js: 23841, затем @ compiler.js: 1007 push ../ node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._compileModuleAndComponents @ compiler.js: 23839 push ../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler.compileModuleAsync @ compiler.js: 23799 push ../ node_modules/@angular/platform-browser-dynamic/fesm5/platform-browser-dynamic.js.CompilerImplynpileMiledule@ platform-browser-dynamic.js: 143 push ../ node_modules/@angular/core/fesm5/core.js.PlatformRef.bootstrapModule @ core.js: 4352 ./src/main.ts @ main.ts: 11 webpack_require @ начальная загрузка: 81 0 @ main.ts: 12 webpack_require @ bootstrap: 81 checkDeferredModules @ bootstrap: 43 webpackJsonpCallback @ bootstrap: 30 (анонимный) @ main.js: 1

Так выглядит мой инициализатор

import { Injectable } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Observable } from 'rxjs';
import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';

@Injectable()
export class InitializerService {

    
    flag = false;

    constructor(private http: HttpClient, private route: ActivatedRoute) { }

    initialize(): boolean {
        // access query params using ActivatedRoute object
        // some http calls using HttpClient object
        // also use objects of HttpHeaders and HttpParams
        return this.flag;
    }
}

Ниже описано, как я предоставляю услугу в NgModule

providers: [
    InitializerService,
    { provide: APP_INITIALIZER, useFactory: init_app, deps: [InitializerService], multi: true},
    { provide: HTTP_INTERCEPTORS, useClass: Interceptor, multi: true }
  ],

Я не уверен, почему я вижу ошибку циклической зависимости

1 Ответ

0 голосов
/ 21 августа 2019

ActivatedRoute недоступен в APP_INITIALIZER из-за начальной загрузки.Вы можете использовать APP_BOOTSTRAP_LISTENER InjectionToken, чтобы убедиться, что ActivatedRoute доступен (что происходит после завершения начальной загрузки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...