Nenhum provedor de TemplateRef! (NgIf -> TemplateRef)

247

Estou tentando mostrar uma marca de seleção se uma resposta for a resposta aceita:

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

Mas eu recebo este erro:

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

O que estou fazendo de errado?

Mark Rajcok
fonte

Respostas:

599

Você perdeu a *frente do NgIf (como todos nós temos, dezenas de vezes):

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

Sem o *, Angular vê que a ngIfdiretiva está sendo aplicada ao divelemento, mas como não existe *ou <template>tag, não é possível localizar um modelo, daí o erro.


Se você receber esse erro com o Angular v5:

Erro: StaticInjectorError [TemplateRef]:
  StaticInjectorError [TemplateRef]:
    NullInjectorError: Nenhum provedor para TemplateRef!

Você pode ter <template>...</template>um ou mais modelos de componentes. Altere / atualize a tag para <ng-template>...</ng-template>.

Mark Rajcok
fonte
A mesma exceção também pode ocorrer se você usar o ngSwitchCase sem o asterisco!
cmxl 17/03