Angular 2 TypeError:无法读取未定义的属性'toUpperCase'

时间:2017-04-20 08:45:56

标签: angular typescript jhipster

我正在开发一个医疗网站,当药物的数量<1时,我想在药剂。组件.HTML的页面中显示警报。 50。 我这样做了:

 <span *ngFor="let medicament of medicaments" >
        <span *ngIf="{{medicament.quantity}} < 50">
             <div class="callout callout-danger lead">
          <h4>Alert!</h4>
          <p>Vous devez charger le stock de medicaments {{medicament.nom}}                         
  de type {{medicament.type}}  </p>
        </div>
        </span></span>

但我不知道为什么它不起作用,错误是:

       > Unhandled Promise rejection: Template parse errors:
        TypeError: Cannot read property 'toUpperCase' of undefined ("<span              
       *ngIf="medicaments">
    <span *ngFor="let medicament of medicaments" >
        <span [ERROR ->]*ngIf="{{medicament.quantity}} < 50">
             <div class="callout callout-danger lead">
       "): MedicamentComponent@26:18
     Can't bind to '*ngIf' since it isn't a known property of 'span'.             
     ("<span *ngIf="medicaments">
    <span *ngFor="let medicament of medicaments" >
        <span [ERROR ->]*ngIf="{{medicament.quantity}} < 50">
             <div class="callout callout-danger lead">
      "): MedicamentComponent@26:18

3 个答案:

答案 0 :(得分:19)

你不应该在ngIf中使用插值{{ }};它需要一个表达式:

<span *ngIf="medicament.quantity < 50">

答案 1 :(得分:0)

在您的日志中,您可以看到错误点:

 <span [ERROR ->]*ngIf="{{medicament.quantity}} < 50">

这是因为你在一个你不应该使用的属性上使用表达式。您只需要使用您正在比较的属性:

 <span *ngIf="medicament.quantity < 50">

答案 2 :(得分:0)

ngIf已经在角度上下文中,这意味着您必须删除括号{{}}