解析器错误:在预期表达式的位置得到插值 ()

Posted

技术标签:

【中文标题】解析器错误:在预期表达式的位置得到插值 ()【英文标题】:Parser Error: Got interpolation () where expression was expected解析器错误:在预期表达式的位置得到插值 () 【发布时间】:2017-03-05 08:05:31 【问题描述】:

我在 angular2 中使用 ng-bootstrap 作为 ui-bootstrap 的替代品。

我的html如下:

<ul class="list-inline">
    <li class="tag" ngb-dropdown auto-close="outsideClick" 
        *ngFor="let item of ['Elastic Search','Database Theory','CVS'];
        let $index=index;" 
        [ngClass]="'default-tag': $index==0, 'matched-tag': $index==1, 'unmatched-tag': $index==2 ">
         <a href ngb-dropdown-toggle id="desiredSkill$index">
             <i class="bi_interface-tick following"></i> item <i class="bi_interface-more tag-menu-icon"></i>
                            </a>
               <ul class="dropdown-menu tag-menu" ngb-dropdown-menu [aria-labelledby]="desiredSkill$index">
                     <li><a href>Follow Skill</a></li>
                     <li><a href>Related Jobs</a></li>
                </ul>
     </li>
  </ul>

但是当我运行我的应用程序时出现以下错误:

main.browser.ts:25Error:模板解析错误: 解析器错误:得到插值 (),其中 [desiredSkill$index] 中的第 12 列应有表达式 职位描述@174:77 (" ][aria-labelledby]="desiredSkill$index">

"): JobDescription@174:77 解析器错误:JobDescription@174:77 (" ][aria-labelledby]="desiredSkill$index"> "): JobDescription@174:77 无法绑定到“aria-labelledby”,因为它不是“ul”的已知属性。 (" ][aria-labelledby]="desiredSkill$index"> "): JobDescription@174:77 解析器错误:得到插值 (),其中 [desiredSkill$index] 中的第 12 列应有表达式 职位描述@174:77 ("
                <div class="row">
                  <div class="col-lg-4 col-xs-4" [ERROR ->]*ngFor="let i of [0,1,3]">
                    <img src="http://ecx.images-amazon.com/images/I/81VFU9"):

职位描述@215:49 解析器错误:JobDescription@174:77 ("

                <div class="row">
                  <div class="col-lg-4 col-xs-4" [ERROR ->]*ngFor="let i of [0,1,3]">
                    <img src="http://ecx.images-amazon.com/images/I/81VFU9"):

职位描述@215:49 解析器错误:得到插值 (),其中 [desiredSkill$index] 中的第 12 列应有表达式 职位描述@174:77 (" ERROR ->="main.applyJob()">申请工作 ERROR ->="main.applyJob()">申请工作 ][hidden]="!ifNotApplied">已应用 ][hidden]="!ifNotApplied">已应用 ][hidden]="!ifNotUploaded">上传简历 ][hidden]="!ifNotUploaded">上传简历 对这份工作有疑问?

[错误->] 对这份工作有疑问吗? [错误->]

【问题讨论】:

【参考方案1】:

您不能在标准属性绑定中使用插值。应该有一个表达式。

应该是这样的:

[attr.aria-labelledby]="'desiredSkill' + $index"

attr.aria-labelledby="desiredSkill$index"

【讨论】:

【参考方案2】:

当我们尝试在同一个 html 属性上同时实现插值和属性数据绑定时,通常会发生此错误。

例子:

错误的实现

[disabled]= isDisabled

正确的实现

disabled= isDisabled

注意:去掉html元素属性中的方括号

【讨论】:

【参考方案3】:

使用这个

  <button class="btn btn-primary" title="Edit" (click)="showEditModal(record.id)"><i class="fa fa-edit"></i></button>

【讨论】:

【参考方案4】:

我想你忘了声明 indexngFor

*ngFor="let item of ['Elastic Search','Database Theory','CVS'];let $index=index" ...

也使用,

[attr.aria-labelledby]="desiredSkill$index"

【讨论】:

你可以试试[attr.aria-labelledby]="desiredSkill$index"吗? 这不是一个解决方案,如果我将它添加到 attr 然后 ngb-bootstrap 将忽略它的值,它只会将属性添加到元素中 哦,我明白了。尝试 yurzui 提供的其他答案。【参考方案5】:

如果你只想传递 $index 值

[attr.aria-labelledby]=" ' ' + $index"

【讨论】:

【参考方案6】:

在链接标签中这样使用

使用这个

<a  class="custom-badge status-blue" [routerLink]="'/hospital/doctorleave/'+item.Id]">Manage Leave</a> 

代替

<a  class="custom-badge status-blue" [routerLink]="'/hospital/doctorleave/item.Id']">Manage Leave</a> 

【讨论】:

以上是关于解析器错误:在预期表达式的位置得到插值 ()的主要内容,如果未能解决你的问题,请参考以下文章

来自 ngFor 项的动态 routerLink 值给出错误“在预期表达式的地方得到插值 ()”

当我调用位置管理器时无法解析方法“requestLocationUpdates”

LogMX 正则表达式解析器的问题

正则表达式匹配不适用于 Pyteomics 解析器的简单字符串

告诉错误位置的 JavaScript JSON 解析器

Python解析器层匹配错误的正则表达式