为什么在将 ngIf 与绑定到离子复选框的布尔值 属性 一起使用时,我的离子按钮无法以正确的状态启动?

Why does my ionic button not start in the correct state when using ngIf with a boolean property bound to an ionic-checkbox?

我目前正在尝试设置一个带有复选框和条件按钮的成分列表,但默认状态有问题。我想要它,以便按钮仅在复选框未选中时可见,以便可以将成分添加到购物清单。

问题是加载页面时,如果未选中成分,则不会显示该按钮。它仅在选中复选框然后取消选中后出现(之后任何时候取消选中)。问题只是在默认状态下。

当使用 *ngIf 语句时,它似乎也将整个项目变成了一个可点击的对象,而没有它似乎没有相同的行为(只能点击实际的复选框来检查它) .

HTML:

<div *ngIf="product.ingredients">
   <h5>Ingredients: </h5>
   <ion-list *ngFor="let ingredient of product.ingredients; let i = index;" lines="none" 
   class="child-list">
      <ion-item>
         {{ ingredient.name }}
         <ion-checkbox slot="start" [(ngModel)]="ingredient.isOwned"></ion-checkbox>
         <ion-button (click)="addIngredient(ingredient)" slot="end" shape="round" *ngIf="!ingredient.isOwned">
            <ion-icon name="bag-add-outline"></ion-icon>
         </ion-button>
      </ion-item>
   </ion-list>
</div>

然后在组件的 TS 文件中,我收到一个产品对象,我们希望它看起来像这样:

JSON:

{
   "ingredients": [
   {
      "name": "greek yogurt",
      "isOwned": "false"
   },
   {
      "name": "turmeric",
      "isOwned": "true"
   },
   {
      "name": "heavy cream",
      "isOwned": "false"
   }
   ]
}

这就是我希望这部分在给定的 json 示例中的样子:

Example List Formatting

编辑:是 JSON 输入导致了问题。感谢您的回答!

请用这个

替换你的JSON
{
   "ingredients": [
   {
      "name": "greek yogurt",
      "isOwned": false
   },
   {
      "name": "turmeric",
      "isOwned": true
   },
   {
      "name": "heavy cream",
      "isOwned": false
   }
   ]
}

您需要在 isOwned 中传递布尔值,因为 'false' 表示 true