2017-08-04 6 views
2

Ich habe ein Problem, bei dem der Code funktioniert, aber ich bekomme einen Tslint-Fehler, den ich nicht herausfinden kann. Dieses Setup funktionierte bei der Verwendung von Angular 1, aber jetzt konvertiere ich die Anwendung mit eckigen Klammern auf 4.Angular 4: Aufrufen von Regex-Mustern aus einem Objekt

Angular: Die Kennung 'vin' ist nicht definiert. Objekt enthält kein ein Mitglied.

Ich habe Regex Muster geteilt, die in einem Objekt gespeichert sind, das unten gezeigt wird. Es wird in meine Komponente importiert und dann mit [pattern]="patterns.KEY" aufgerufen.

Das Muster funktioniert genau so, wie es sollte und Validierung funktioniert, aber ich bekomme immer noch den obigen Fehler, wenn ich es an einen meiner Eingänge anschließe. Liegt es daran, dass mir Datentypen unter patterns fehlen? Wenn ja, wie wäre es definiert?

Der Fehler wird nur für die Vorlagendatei ausgelöst. Die Komponente und die Musterdatei haben keine Validierungsfehler.

Template Code:

<div class="form-group"> 
    <label for="vin">VIN</label> 
    <input type="text" class="form-control" id="vin" placeholder="VIN" 
      minlength="8" maxlength="17" required [pattern]="patterns.vin" 
      [(ngModel)]="model.Vin" name="Vin" #Vin="ngModel"> 
    </div> 

Komponentencode:

export class COMPONENT_NAME implements OnInit { 
    patterns = Patterns; 
} 

Patterns Datei:

export const Patterns: Object = { 
    vin: /^[\w\d]+$/i, 
}; 
+0

Es funktioniert für mich in [dieser Plunk] (https://plnkr.co/edit/Qx9SFvsMVkOthmH53vGZ?p=preview) haben Sie aus der Datei korrekt importiert? Edit: Plunk mit Eingabe aktualisiert: muss mit 'a' beginnen und alle anderen Kriterien erfüllt – 0mpurdy

+0

@ 0mpurdy es wirft einen Fusselfehler auf die Vorlage-Datei, aber es ist in Ordnung. Mehr ein lästiges Problem, kein Breaking-Problem. – austinthedeveloper

+0

als Entschuldigung Ich habe nicht verstanden, dass es ein Flusenproblem war, versuche es nicht als 'Objekt' einzugeben und typescript abzuleiten, um welche Typen es sich handelt (oder erstelle eine Schnittstelle) – 0mpurdy

Antwort

1

Schaltet die answ aus Es war ziemlich einfach. patterns muß definiert werden, sondern der Wert benötigte innerhalb ngOnInit() eingestellt werden:

ich sah
export class COMPONENT_NAME implements OnInit { 
    patterns; 
    ngOnInit() { 
    this.patterns = Patterns; 
    } 
} 

Dies entfernt das Tslint Problem.

Verwandte Themen