2017-11-24 3 views
1

https://github.com/angular/angular-cli/pull/6813 Warnungen für zirkuläre Abhängigkeiten hinzugefügt, und ich weiß, ich kann alle Warnungen mit "showCircularDependencies" deaktivieren: false. Aber ich würde lieber die zyklischen Abhängigkeitswarnungen anschalten. Gibt es ein Muster, mit dem ich den Anwendungsfall unten beheben kann, oder gibt es eine Möglichkeit, das Circular Dependency Plugin für eine bestimmte Datei spezifisch zu deaktivieren?WARNUNG in zirkuläre Abhängigkeit erkannt - Winkel Cli

Das einfachste Szenario ist, wenn ich 3 Dateien:

forms.model.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))); 
    } 
} 

custom.model.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 Warnungen:

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 meiner aktuellen App gibt es etwa 20 bis 30 Warnungen wegen dieser gleichen Muster. Ich denke, das zugrunde liegende Plugin https://github.com/aackerman/circular-dependency-plugin unterstützt Muster ausschließen, aber ich bin mir nicht sicher, ob es eine Möglichkeit gibt, dies über den eckigen-Cli zu verwenden.

+0

Überprüfen Sie diese https://github.com/angular/angular-cli/issues/7705 –

Antwort

1

Das Problem ist klar:

Du custom.model.ts in custom.form.ts

und auch custom.form.ts in custom.model.ts Verwendung

Diese CircularDependencies genannt wird, und das ist nicht gut.

Lösung:

Entfernen Sie einfach import { CustomForm } from './custom.form'; von custom.model.ts

+0

Ah sorry, dieser Import war zufällig beim Erstellen dieser SO Frage. Ich habe diese Zeile jetzt aus der ursprünglichen Frage heraus bearbeitet. Das Entfernen des Imports hilft in diesem Fall nicht. Die zirkuläre Abhängigkeit wird durch Aufrufe von new Forms() und neuen CustomForms() verursacht. –

0

Sie den Code von forms.model.ts und custom.form.ts in derselben Datei haben kann und dass die zirkuläre Abhängigkeit entfernen.

Verwandte Themen