gpt4 book ai didi

angular - Ionic 3 如何在点击事件中选择特定的 ionic 芯片?

转载 作者:行者123 更新时间:2023-12-04 10:50:40 27 4
gpt4 key购买 nike

我有一堆由 ngFor 循环生成的 ionic 芯片。我使用 tagDefaultColor 添加了选择所有 ionic 芯片功能多变的。现在,当我想选择单个 ionic 芯片时,它会选择所有这些。

我想要实现的是能够使用切换所有按钮来选择每个 ion-chip或通过单击事件一一选择它们。一次ion-chip选中它会将其颜色更改为主要颜色。先感谢您。

constructor(public navCtrl: NavController, public navParams: NavParams) {
this.information = navParams.data.data;
this.children = [{ id: 1, name: 'Ginny Weasley' }, { id: 2, name: 'Harry Potter' }, { id: 3, name: 'Ronald Weasley' }, { id: 4, name: 'Luna Lovegood' }];
this.selectButtonText = 'SELECT ALL';
//this.tagSelectedColor = "primary";
this.tagDefaultColor = "secondary";
this.quantity = 0.0;
this.shareWithFamily = true;
}

selectAll() {
if (this.selectButtonText === 'SELECT ALL') {
this.selectButtonText = 'UNSELECT ALL'
this.tagDefaultColor = "primary";
} else {
this.selectButtonText = 'SELECT ALL'
this.tagDefaultColor = "secondary"
}
}

changeTagColor(event) {
console.log(event.target);
if (this.tagDefaultColor === "secondary") {
this.tagDefaultColor = "primary"
} else {
this.tagDefaultColor = "secondary"
event.target.setAttribute('color', 'secondary')
}
}


HTML 部分

<ion-item no-lines>
<ion-row>
<ion-col style="display: flex;align-items: center; justify-content: center">
<strong>Tag Students</strong>
<button ion-button full color="primary" class="select-all-btn" (click)="selectAll()">{{selectButtonText}}
</button>
</ion-col>
</ion-row>
</ion-item>

<div class="students-tags">
<ion-chip [id]="child.id" [color]="tagDefaultColor" (click)="changeTagColor($event)" *ngFor="let child of children">
<ion-label>{{child. name}}</ion-label>
</ion-chip>
</div>

最佳答案

你所有的芯片都绑定(bind)到同一个属性,所以如果你改变它们,它们都会改变。相反,您应该使用数组来单独分配它们,如下所示:

<ion-chip [id]="child.id" [color]="tagDefaultColor[i]" (click)="changeTagColor(i)" *ngFor="let child of children;let i = index">
<ion-label>{{child. name}}</ion-label>
</ion-chip>
changeTagColor(i:number) {
console.log(event.target);
if (this.tagDefaultColor[i] === "secondary") {
this.tagDefaultColor[i] = "primary"
} else {
this.tagDefaultColor[i] = "secondary"
// event.target.setAttribute('color', 'secondary') this is redundant
}
}

编辑:
由于 ionic 遗憾地没有导出组件,因此您不能使用模板 ref 直接使用组件更改颜色。

正如您在评论中所问的那样,有一种简单的方法可以填充颜色数组,如下所示:
  tagDefaultColor = Array(this.children.length).fill("secondary");


Here是 Stackblitz 样本。

关于angular - Ionic 3 如何在点击事件中选择特定的 ionic 芯片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59486839/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com