WARNUNG zyklische Abhängigkeit erkannt - Winkel-Cli
https://github.com/angular/angular-cli/pull/6813 Hinzugefügt Warnungen für zirkuläre Abhängigkeiten, und ich weiß, ich kann schalten Sie alle Warnungen "showCircularDependencies": false. Aber ich würde lieber halten Sie die zirkuläre Abhängigkeit Warnungen auf. Gibt es ein Muster, lassen Sie mich fix der use-case-unten, oder gibt es eine Möglichkeit, gezielt deaktivieren Sie die zirkuläre Abhängigkeit plugin auf eine bestimmte Datei?
Das einfachste Szenario ist, wenn ich 3 Dateien:
Formen.Modell.ts
import { CustomModel } from './custom.model';
import { CustomForm } from './custom.form';
export class Forms {
items: CustomForm[] = [];
public constructor(models?: CustomModel[]) {
models.forEach(model => this.items.push(new CustomForm(model)));
}
}
Brauch.Modell.ts
export class CustomModel {
nestedModels: CustomModel[];
}
Brauch.form.ts
import { Forms } from './forms.model';
import { CustomModel } from './custom.model';
export class CustomForm {
nestedForms: Forms;
constructor(model: CustomModel) {
this.nestedForms = new Forms(model.nestedModels);
}
}
Dies bewirkt, dass die folgenden Warnhinweise:
WARNING in Circular dependency detected:
src\app\models\custom.form.ts -> src\app\models\forms.model.ts -> src\app\models\custom.form.ts
WARNING in Circular dependency detected:
src\app\models\forms.model.ts -> src\app\models\custom.form.ts -> src\app\models\forms.model.ts
In meinem eigentlichen app gibt es über 20-30 Warnungen, weil dieser gleichen Muster.
Ich denke, dass die zugrunde liegenden plugin https://github.com/aackerman/circular-dependency-plugin unterstützt ausschließen-Muster, aber ich bin nicht sicher, dass, wenn theres ein Weg, um diese über die Winkel-cli.
InformationsquelleAutor Dulitha Ranatunga | 2017-11-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem ist klar :
Sind Sie mit
custom.model.ts
incustom.form.ts
und auch
custom.form.ts
incustom.model.ts
,Dies wird als
CircularDependencies
- und das ist nicht gut.Lösung :
Entfernen Sie einfach
import { CustomForm } from './custom.form';
auscustom.model.ts
custom.form.ts
war nicht importiertcustom.model.ts
.Können Sie erklären, warum eine zirkuläre Abhängigkeit ist 'nicht gut'? Ich kann zwei Funktionen in einer Datei, wo jede Funktion kann in bestimmten Fällen rufen die anderen. Dies ist auch eine zirkuläre Abhängigkeit (jede Funktion braucht die andere um zu existieren), aber ich habe nicht gesehen, dass ein moderner compiler beschweren sich über diesen Fall...
InformationsquelleAutor Vivek Doshi
Können Sie den code von Formularen.Modell.ts und Brauch.form.ts in der gleichen Datei und entfernen Sie die zirkuläre Abhängigkeit.
InformationsquelleAutor Carlos Rincones
Den Formen.Modell.ts verwendet benutzerdefinierte.form.ts, Brauch.form.ts-Formulare verwendet.Modell.ts das ist die Ursache der Abhängigkeit Zyklus, entfernen Sie diese Beziehung, indem Sie Ihre Modell.
Wie erstellen Sie Formulare, wenn Sie nicht über eine CustomForm, und Sie können nicht erstellen CustomForm, weil Sie nicht Formen? (Ja, Sie können mit null oder undefiniert, aber das ist hässlich)
Formen.Modell.ts
Brauch.form.ts
InformationsquelleAutor G.Vitelli