Ionic / Angular 离子项,带有按钮单击以选择隐藏选定的离子项

Posted

技术标签:

【中文标题】Ionic / Angular 离子项,带有按钮单击以选择隐藏选定的离子项【英文标题】:Ionic / Angular ion-item with button click to select hide selected ion-item 【发布时间】:2020-07-19 16:27:29 【问题描述】:

我正在使用 Ionic 5 / Angular,并且我有一个 ion-item 的列表。每个都有一个按钮。

下面的代码示例:

<ion-list>
    <ion-item>
        <ion-label>One</ion-label>
            <ion-button slot="end" (click)="selfhide()">
                <ion-icon slot="icon-only" name="close-outline"></ion-icon>
            </ion-button>
    </ion-item>
    <ion-item>
        <ion-label>Two</ion-label>
            <ion-button slot="end" (click)="selfhide()">
                <ion-icon slot="icon-only" name="close-outline"></ion-icon>
            </ion-button>
    </ion-item>
    <ion-item>
        <ion-label>Three</ion-label>
            <ion-button slot="end" (click)="selfhide()">
                <ion-icon slot="icon-only" name="close-outline"></ion-icon>
            </ion-button>
    </ion-item>
</ion-list>

我需要能够点击任何一个并让它自动隐藏。

所以如果我点击第一个ion-item 的按钮,那么ion-item 就会消失。

我该怎么做?

【问题讨论】:

一旦你得到好的关键字,谷歌第一:***.com/questions/45549297/angular-hide-with-button 【参考方案1】:

这是使用 ngIf 的解决方案:

<ion-list>
    <ion-item *ngIf="display.one">
        <ion-label>One</ion-label>
            <ion-button slot="end" (click)="selfhide('one')">
                <ion-icon slot="icon-only" name="close-outline"></ion-icon>
            </ion-button>
    </ion-item>
    <ion-item *ngIf="display.two">
        <ion-label>Two</ion-label>
            <ion-button slot="end" (click)="selfhide('two')">
                <ion-icon slot="icon-only" name="close-outline"></ion-icon>
            </ion-button>
    </ion-item>
    <ion-item *ngIf="display.three">
        <ion-label>Three</ion-label>
            <ion-button slot="end" (click)="selfhide('three')">
                <ion-icon slot="icon-only" name="close-outline"></ion-icon>
            </ion-button>
    </ion-item>
</ion-list>

在你的组件中

display =  one:true, two: true, three: true ;


selfHide(item) 
    display[item] = false;

【讨论】:

【参考方案2】:

Noelmout 的解决方案非常好,但我以更通用的方式做了另一个解决方案,因此您的列表可以是动态的。我还添加了一个“全部显示”按钮来再次显示所有项目。 这里是component.html

<ion-header>
  <ion-navbar>
    <ion-title>Home</ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>

  <ion-list>
    <ng-container *ngFor="let item of items">
      <ion-item *ngIf="item.visible">

        <ion-text slot="start">item.name</ion-text>
        <ion-button slot="end" (click)="hideItem(item)">
          <ion-icon slot="icon-only" name="close"></ion-icon>
        </ion-button>

      </ion-item>
    </ng-container>
  </ion-list>

  <ion-button (click)="displayAllItems()">
    show all
  </ion-button>

</ion-content>

以及相应的component.ts:

import  Component  from "@angular/core";
import  NavController  from "ionic-angular";

@Component(
  selector: "page-home",
  templateUrl: "home.html"
)
export class HomePage 
  public items = [
     name: "One", visible: true ,
     name: "Two", visible: true ,
     name: "Three", visible: true ,
     name: "Four", visible: true 
  ];

  constructor(public navCtrl: NavController) 

  hideItem(item:  name: string; visible: boolean ) 
    item.visible = false;
  

  displayAllItems() 
    this.items.forEach(item => (item.visible = true));
  

我还在stackblitz 上创建了一个项目来玩弄它。

【讨论】:

以上是关于Ionic / Angular 离子项,带有按钮单击以选择隐藏选定的离子项的主要内容,如果未能解决你的问题,请参考以下文章

无法解析角度离子项目的依赖关系树

Angular2,Ionic2:如何使用 ngModel 对嵌套 *ngfor 中的单选按钮进行 2way 绑定?

带有从右到左单选按钮的离子警报

用于我的离子项目的最佳数据库

离子:如何在多条线上显示离子项?

[Angular]单运行时多项目共享依赖方案