In meiner Angular App habe ich eine globale Variable namens AppInjector, die den Injektor zurückgibt. Diese Variable wird in AppModule
gesetzt.Angular 2: Globaler AppInjector. Wie vermeiden Warnung "zirkuläre Abhängigkeit"
export let AppInjector: Injector;
@NgModule({
declarations: [
AppComponent,
],
bootstrap: [AppComponent],
})
export class AppModule {
constructor(private injector: Injector) {
AppInjector = this.injector;
}
}
Ich habe einige Hilfsfunktionen, die mit Hilfe des AppInjector
einen besonderen Service erhalten. Die Hilfsfunktionen befinden sich in separaten Dateien und gehören keiner Komponente an. Zum Beispiel:..?
function initNodeTemplate() {
diagram.nodeTemplateMap.add(NodeCategory.Question,
GO(go.Node, "Auto",
{
click: (evt, obj) => {(AppInjector.get(MyService) as MyService).myFunction(obj)},
},
// other stuff ...
));
}
Das Problem ist, dass der Winkel Compiler mich über eine zirkuläre Abhängigkeit warnt (wegen der AppInjector
WARNING in Circular dependency detected: src\app\app.module.ts -> src\app\frame\frame.module.ts -> src\app\designer\designer.module.ts -> src\app\designer\designer.component.ts -> src\app\designer\helpers\templates.helper.ts -> src\app\app.module.ts
Wie kann ich diese Warnung loswerden Ich weiß, dass Ich kann einen Service in eine Komponente injizieren und dann den Service an die Hilfsfunktion übergeben. In diesem Fall könnte ich detailService
als Parameter an initNodeTemplate()
übergeben und so brauche ich nicht mehr die AppInjector
. Aber ich möchte vermeiden, meine Funktion zu versauen Parameter mit diesen Diensten.
Brechen Sie den Zyklus. Schwer zu sagen, genau wie ohne den Code zu sehen, der es verursacht. Siehe auch https://stackoverflow.com/questions/41585863/angular2-injecting-services-in-custom-errorhandler/41585902#41585902 –