Ich habe ein Angular 5-Projekt erstellt und eine Factory erstellt, die Metadaten aus dem Service vor dem Start der Anwendung bereitstellen sollte. Das Problem ist, dass ich Fehler:Angular "Maximale Call-Stack-Größe überschritten" bei Verwendung des Injektors
RangeError: Maximum call stack size exceeded
at resolveNgModuleDep (core.js:10559)
at _callFactory (core.js:10649)
at _createProviderInstance$1 (core.js:10599)
at resolveNgModuleDep (core.js:10581)
at _createClass (core.js:10622)
at _createProviderInstance$1 (core.js:10596)
at resolveNgModuleDep (core.js:10581)
at NgModuleRef_.get (core.js:11806)
at new MetadataService (metadata.service.ts:23)
at _createClass (core.js:10622)
App-Modul:
@NgModule({
declarations: [
AppComponent,
...
],
imports: [
BrowserModule,
HttpClientModule,
AppRoutingModule,
FormsModule,
FlexLayoutModule,
I18NextModule.forRoot()
],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },
MetadataService,
{ provide: APP_INITIALIZER, useFactory: MetadataProviderFactory, deps: [MetadataService], multi: true },
{ provide: APP_INITIALIZER, useFactory: I18NextProviderFactory, deps: [I18NEXT_SERVICE], multi: true }
],
bootstrap: [AppComponent]
})
export class AppModule { }
Metadatendienst:
import { Injectable, Injector } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class MetadataService {
private http: HttpClient;
constructor(private injector: Injector) {
this.http = injector.get(HttpClient); // this row makes a problem
}
Diese Zeile macht ein Problem.
Ich habe diese Zeile zu vermeiden zirkuläre Referenz und ich bekomme "Maximale Call-Stack-Größe überschritten". Wo liege ich falsch?
Warum injizieren Sie nicht den 'HttpClient' im Konstruktor? –
Weil ich bekomme 'kann zyklische Abhängigkeit nicht instanziieren!' Error. – Milos
@Milos irgendwelche Updates? Ich stoße auf etwas Ähnliches, ich war in der Lage, es zu beheben, indem ich den http Anruf mit einem setTimeout verzögerte. (Ich hatte einen Anruf gemacht, sobald der Dienst erstellt wurde) –