一个元素上不能有多个模板绑定。或语句。

5

作为一个编程新手,我对此感到困惑。*ngIf="!report.approved*jhiHasAnyAuthority="'ROLE_ADMIN'"是分开工作的,所以我猜OR语句可能是问题所在。我尝试使用一些答案中建议的<ng-container>,但是我无法让它工作。有没有办法做到像这样的事情?

<button type="submit">View</button>
<div *ngIf="!report.approved" || *jhiHasAnyAuthority="'ROLE_ADMIN'">
  <button type="submit">Edit</button>
  <button type="submit">Delete</button>
</div>

管理员应始终看到按钮,而用户只能在报告未经批准时才能看到按钮。


你尝试过使用 *ngIf="!report.approved" || jhiHasAnyAuthority="'ROLE_ADMIN'" 吗? - eko
是的。它会移除每一个按钮。 - beetle
3个回答

2
一个解决办法是将两个指令分别放在不同的
中,如果你想要实现OR,则需要重复代码,像这样:

对于AND

    <div *jhiHasAnyAuthority="'ROLE_ADMIN'">
        <div *ngIf="!report.approved" >
            //your html code here
        </div>
    </div>

关于OR

   <div *jhiHasAnyAuthority="'ROLE_ADMIN'">
         //your html code here
   </div>
   <div *ngIf="!report.approved">
        //your html code here
   </div>

即使使用这个OR版本,如果两个条件同时满足,你仍然会得到重复的结果。

1
这不会改变结果为“AND”而不是“OR”吗? - Caramiriel
是的,我刚刚更新了答案并添加了OR版本。感谢您的评论。 - Alex Pop
现在它可能会显示HTML代码两次(或者)当两个条件都为真时。 - Caramiriel

1
您可以复制以下代码以获得所需效果。
<button type="submit">View</button>
<div *ngIf="!report.approved">
    <button type="submit">Edit</button>
    <button type="submit">Delete</button>
</div>
<div *ngIf="report.approved">
    <div *jhiHasAnyAuthority="'ROLE_ADMIN'">
        <button type="submit">Edit</button>
        <button type="submit">Delete</button>
    </div>
</div>

0

我猜你在双引号方面遇到了一些问题,需要在第二个语句中添加一个=。由于你使用了双引号关闭了*ngIf指令,所以无法访问!report.approved之后的部分。

现在无法检查,但我猜这可能有效:

<div *ngIf="!report.approved || jhiHasAnyAuthority=='ROLE_ADMIN'">

不起作用。ngIf和jhiHasAnyAuthority都是指令,据我所知它们需要*才能工作。 - beetle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接