如果答案被接受,我想展示一个复选标志:
template: `<div ngIf="answer.accepted">✔</div>`
但是我遇到了这个错误:
EXCEPTION: No provider for TemplateRef! (NgIf ->TemplateRef)
我做错了什么?
如果答案被接受,我想展示一个复选标志:
template: `<div ngIf="answer.accepted">✔</div>`
但是我遇到了这个错误:
EXCEPTION: No provider for TemplateRef! (NgIf ->TemplateRef)
我做错了什么?
你忘记在NgIf前面加上*
了(就像我们所有人都做过的那样,多次):
<div *ngIf="answer.accepted">✔</div>
没有使用星号(*)时,Angular会将ngIf指令应用于div元素,但由于没有星号或标签,它无法定位模板,因此会出现错误。如果您在使用Angular v5时遇到此错误:所以,我可以帮助您了解您的错误是什么(以及在哪里),但在此之前,我们需要阅读文档:
通过在元素上放置指令(或带有*前缀的指令)来访问TemplateRef实例。针对嵌入视图的TemplateRef将使用TemplateRef标记注入到指令的构造函数中。
您还可以使用查询来查找与组件或指令关联的TemplateRef。
因此:
[ngIf]="something"
时,您必须使用<ng-template>
来访问模板引用(例如:使用<template>
或<ng-template>
);*ngIf
,您可以在任何地方使用它,因为*保证了对模板引用的访问(例如:使用<span>
或<div>
);如果您在代码中使用类似于<span [ngIf]="message"> {{message}}</span>
的东西,可能会出现一些错误。
在编写代码时,常见的一个误解是会错过一些语法,其中一个流行的错误就是在使用ngIf之前不加*号,这会导致Angular编译器将ngIf读取为模板引用变量,并检查变量的本地引用,而该引用在文件中找不到。因此,请检查这些错误并尽可能从中学习。
<div *ngIf="answer.accepted">✔</div>