在 Angular 中使用 ngTemplateOutlet 时出现模板解析错误
Template parsing error while using ngTemplateOutlet in Angular
我在 Angular 代码
中实现 ngTemplateOutlet
时出现以下错误
compiler.js:2420 Uncaught Error: Template parse errors:
Parser Error: Missing expected } at column 47 in [searchListing; context: {$implicit: entityList:genericJobList,
canCreateEntity:canCreateJob, nextBookmarkList:genericNextBmJobList,'disableScroll:disableJobScroll}]
in ng:///SharedSearchModule/SearchCompareComponent.html@707:7 ("
它说错误在第707行。我在第707行的代码是ngTemplateOutlet
本身的代码
<ng-container
*ngTemplateOutlet="searchListing; context: {$implicit: entityList:genericJobList,
canCreateEntity:canCreateJob, nextBookmarkList:genericNextBmJobList,
disableScroll:disableJobScroll}">
</ng-container>
部分ng-template如下:
<ng-template #searchListing let-canCreateEntity="canCreateEntity"
let-entityList="entityList" let-nextBookmarkList="nextBookmarkList"
let-disableScroll="disableScroll">
<!-- template code here -->
</ng-template>
根据遇到的错误,我没有看到缺少 }
。我传递的道具是布尔类型(canCreateEntity、disableScroll)、对象数组(entityList)和字符串(nextBookmarkList)。我无法提供一个工作示例,因为我无法在不修改的情况下共享完整代码。谁能指出错误是什么
你的语法有误。对于 $implicit,您必须传递一个有效的 json 对象,因此您的上下文应如下所示:
{
$implicit: {
entityList: genericJobList,
canCreateEntity: canCreateJob,
nextBookmarkList: genericNextBmJobList,
disableScroll: disableJobScroll
}
}
当然,格式化是可选的,只是为了让您的代码的区别更加清晰。您提供的错误消息甚至告诉您预期的 }
应该在第 47 列,也就是第二个冒号所在的位置。这是该值不再被解释为有效的点 json,因此假设您忘记了右括号。
编辑
现在我仔细研究了您如何在 ng-template
中使用上下文,您的上下文应该如下所示:
{
entityList: genericJobList,
canCreateEntity: canCreateJob,
nextBookmarkList: genericNextBmJobList,
disableScroll: disableJobScroll
}
如果使用$implicit
,可以这样参考上下文:
<ng-template let-whatever>
{{ whatever }}
</ng-template>
由于您不使用 $implicit
值,因此您不必提供。
我在 Angular 代码
中实现ngTemplateOutlet
时出现以下错误
compiler.js:2420 Uncaught Error: Template parse errors:
Parser Error: Missing expected } at column 47 in [searchListing; context: {$implicit: entityList:genericJobList,
canCreateEntity:canCreateJob, nextBookmarkList:genericNextBmJobList,'disableScroll:disableJobScroll}]
in ng:///SharedSearchModule/SearchCompareComponent.html@707:7 ("
它说错误在第707行。我在第707行的代码是ngTemplateOutlet
本身的代码
<ng-container
*ngTemplateOutlet="searchListing; context: {$implicit: entityList:genericJobList,
canCreateEntity:canCreateJob, nextBookmarkList:genericNextBmJobList,
disableScroll:disableJobScroll}">
</ng-container>
部分ng-template如下:
<ng-template #searchListing let-canCreateEntity="canCreateEntity"
let-entityList="entityList" let-nextBookmarkList="nextBookmarkList"
let-disableScroll="disableScroll">
<!-- template code here -->
</ng-template>
根据遇到的错误,我没有看到缺少 }
。我传递的道具是布尔类型(canCreateEntity、disableScroll)、对象数组(entityList)和字符串(nextBookmarkList)。我无法提供一个工作示例,因为我无法在不修改的情况下共享完整代码。谁能指出错误是什么
你的语法有误。对于 $implicit,您必须传递一个有效的 json 对象,因此您的上下文应如下所示:
{
$implicit: {
entityList: genericJobList,
canCreateEntity: canCreateJob,
nextBookmarkList: genericNextBmJobList,
disableScroll: disableJobScroll
}
}
当然,格式化是可选的,只是为了让您的代码的区别更加清晰。您提供的错误消息甚至告诉您预期的 }
应该在第 47 列,也就是第二个冒号所在的位置。这是该值不再被解释为有效的点 json,因此假设您忘记了右括号。
编辑
现在我仔细研究了您如何在 ng-template
中使用上下文,您的上下文应该如下所示:
{
entityList: genericJobList,
canCreateEntity: canCreateJob,
nextBookmarkList: genericNextBmJobList,
disableScroll: disableJobScroll
}
如果使用$implicit
,可以这样参考上下文:
<ng-template let-whatever>
{{ whatever }}
</ng-template>
由于您不使用 $implicit
值,因此您不必提供。