如果答案是可接受的答案,我会尝试显示复选标记:
template: `<div ngIf="answer.accepted">✔</div>`
但是我得到了这个错误:
EXCEPTION: No provider for TemplateRef! (NgIf ->TemplateRef)
我做错了什么?
发布于 2016-03-11 12:12:57
你错过了NgIf面前的*
(就像我们所有人一样,几十次):
<div *ngIf="answer.accepted">✔</div>
如果没有*
,Angular会看到ngIf
指令正被应用于div
元素,但是由于没有*
或<template>
标记,它无法定位模板,因此出现了错误。
如果使用Angular v5时出现以下错误:
错误: StaticInjectorErrorTemplateRef:
*StaticInjectorErrorTemplateRef:
*NullInjectorError:没有TemplateRef的提供程序!
您的一个或多个组件模板中可能包含<template>...</template>
。将标记更改/更新为<ng-template>...</ng-template>
。
发布于 2021-03-18 13:45:46
因此,我可以帮助理解您犯了什么错误(以及在哪里犯了错误),但在此之前,我们需要阅读文档:
通过在元素上放置指令(或以*为前缀的指令)来访问TemplateRef实例。使用TemplateRef标记将嵌入式视图的TemplateRef注入到指令的构造函数中。
您还可以使用查询来查找与组件或指令关联的TemplateRef。
所以:
[ngIf]="something"
时,您必须使用<ng-template>
来访问模板引用(例如:使用<template>
或<div>
);时,您可以在您想要的地方使用它,因为*保证了对模板引用的访问(例如:使用<span>
或时
如果你在你的代码中使用像<span [ngIf]="message"> {{message}}</span>
这样的东西,你可能会得到一些错误。
https://stackoverflow.com/questions/35932074
复制相似问题