2016-07-29 1 views
1

habe ich eine strukturelle Richtlinie erstellt. Hier ist der Konstruktor dieser Klasse.Kein Anbieter für NgModel! Bei der Erstellung der Strukturrichtlinie

constructor(private templateRef: TemplateRef<any>, private viewContainer: ViewContainerRef, public query: NgModel) { 
    console.log(this.query) 
} 

Wenn ich public query:NgModel entfernen, es funktioniert gut. Wenn ich es hinzufüge Es wirft Fehler auf.

Error: Uncaught (in promise): No provider for NgModel! (ControlMeta -> NgModel)

Was ist hier der Fehler?

Ich habe das gleiche für normale Richtlinie, es funktioniert gut.

+0

Was der Fehler werfen ist das? –

+0

@AndreiZhytkevich, Ich aktualisierte Frage.Error: Ungefangen (in Versprechen): Kein Anbieter für NgModel! (ControlMeta -> NgModel) ' –

Antwort

4

Sie haben NgModel als provider angeben:

@Directive({ 
    selector: '...', 
    providers: [NgModel], 
    ... 
}) 
+0

Funktioniert gut, Danke, aber ich habe nicht verstanden, warum es keinen Fehler für eine andere normale Richtlinie zeigt, wo ich das tat und Fehler nur für strukturelle Richtlinie zeige? –

+0

Es ist strukturelle Richtlinie. Normalerweise machen Sie dasselbe für Ihre benutzerdefinierten Anweisungen (spezifizieren Sie es in der 'Provider'-Liste). –

+0

@AndreiZhytkevich sollte Direktive DOM die' [(ngModel)] 'Direktive für dieses Element haben? –