Нет провайдера для TemplateRef! (NgIf -> TemplateRef)

247

Я пытаюсь показать галочку, если ответ является принятым ответом:

template: `<div ngIf="answer.accepted">&#10004;</div>`

Но я получаю эту ошибку:

EXCEPTION: No provider for TemplateRef! (NgIf ->TemplateRef)

Что я делаю не так?

Марк Райкок
источник

Ответы:

603

Вы пропустили *перед NgIf (как и все мы, десятки раз):

<div *ngIf="answer.accepted">&#10004;</div>

Без *, Angular видит, что ngIfдиректива применяется к divэлементу, но так как тега нет *или нет <template>, он не может найти шаблон, а значит, и ошибку.


Если вы получите эту ошибку с Angular v5:

Ошибка: StaticInjectorError [TemplateRef]:
  StaticInjectorError [TemplateRef]:
    NullInjectorError: Нет поставщика для TemplateRef!

Вы можете использовать <template>...</template>один или несколько шаблонов компонентов. Изменить / обновить тег на <ng-template>...</ng-template>.

Марк Райкок
источник
Такое же исключение может произойти, если вы используете ngSwitchCase без звездочки!
CMXL