source

TemplateRef!(NgIf ->TemplateRef) 제공자가 없습니다.

itover 2023. 4. 27. 22:12
반응형

TemplateRef!(NgIf ->TemplateRef) 제공자가 없습니다.

응답이 허용된 경우 체크 표시를 표시하려고 합니다.

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

하지만 다음과 같은 오류가 발생합니다.

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

내가 뭘 잘못하고 있는 거지?

당신은 그것을 놓쳤습니다.*NgIf 앞에서 (우리 모두가 수십 번 그랬던 것처럼):

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

다음을 제외하고는*Angular는 그것을 봅니다.ngIf지시가 적용되고 있습니다.div요소, 하지만 없기 때문에.*또는<template>태그. 템플릿을 찾을 수 없으므로 오류가 발생했습니다.


Angular v5에서 이 오류가 발생하는 경우:

오류: 정적 인젝터 오류[TemplateRef]:
정적 인젝터 오류 [템플릿 참조]:
NullInjectorError: TemplateRef!에 대한 공급자가 없습니다.

당신은 아마<template>...</template>하나 이상의 구성 요소 템플릿에 있습니다.태그를 다음으로 변경/업데이트<ng-template>...</ng-template>.

따라서 귀하가 실수한 내용(그리고 어디서)을 이해하는 데 도움이 될 수 있지만, 그 전에 문서를 읽어야 합니다.

요소(또는 * 앞에 붙은 지시어)에 지시어를 배치하여 TemplateRef 인스턴스에 액세스합니다.포함된 보기에 대한 TemplateRef는 TemplateRef 토큰을 사용하여 지시어 생성자에 주입됩니다.

쿼리를 사용하여 구성 요소 또는 지시어와 연결된 TemplateRef를 찾을 수도 있습니다.

그래서:

  • 사용 시[ngIf]="something"사용해야 합니다.<ng-template>템플릿 참조 액세스(예: 사용 시)<template>또는<ng-template>);
  • 사용.*ngIf* 가란트가 템플릿 참조에 대한 액세스 권한을 제공하므로 원하는 곳에서 사용할 수 있습니다(예: 사용 시).<span>또는<div>);

코드에서 다음과 같은 것을 사용하는 경우<span [ngIf]="message"> {{message}}</span>아마 오류가 날 겁니다.

코드를 작성할 때 몇 개의 구문을 놓치는 것은 일반적인 오해입니다. 모든 사람이 ngIf 앞에 *를 사용하지 않는 것이 일반적인 실수입니다. ngIf를 사용할 때 각도 컴파일러가 ngIf를 템플릿 참조 변수로 만들고 파일에서 찾을 수 없는 변수에 대한 로컬 참조를 확인합니다.그러니 이 실수들을 확인하고 가능하다면 그것들로부터 배워주세요.

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

언급URL : https://stackoverflow.com/questions/35932074/no-provider-for-templateref-ngif-templateref

반응형