2016-07-29 1 views
1

Я создал структурную директиву. Вот конструктор этого класса.Нет провайдера для NgModel! при создании Структурной директивы

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

Если я удалю public query:NgModel, он отлично работает. Если я его добавлю, он выдает ошибку.

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

Что такое ошибка здесь?

Я сделал то же самое для нормальной директивы, он работает нормально.

+0

Что ошибка делает это бросить? –

+0

@AndreiZhytkevich, я обновил вопрос. «Ужас: нечистый (в обещании): Нет провайдера для NgModel! (ControlMeta -> NgModel) ' –

ответ

4

Вы должны указать NgModel в provider:

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

Работаю отлично, спасибо, Но я не понял, почему он не показывает ошибку для другой обычной директивы, где я сделал то же самое и показывал ошибку только для структурной директивы? –

+0

Это структурная директива. Вы обычно делаете то же самое для своих пользовательских директив (укажите его в списке «поставщиков») –

+0

@AndreiZhytkevich должен указать директиву DOM должна иметь директиву '[(ngModel)]' для этого элемента? –

Смежные вопросы