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

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

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

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

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

Что я делаю неправильно?

Ответ 1

Вы пропустили * перед 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>.

Ответ 2

Я не получил эту ошибку для содержащего шаблона или аналогичной проблемы. Эта ошибка возникла из-за некоторой ошибки кода, например:

`objects.someProperty1 > 0, где свойство someProperty1 может не существовать.

Таким образом, другой ошибочный код может вызвать эту ошибку. Надеюсь, это поможет!