我正在尝试根据某个项目是否存在相同的类来向该项目添加一个类。
在以下代码中,我将数据绑定与classList
一起使用,但没有用:
<ion-item #firstItem>
<ion-label>My label</ion-label>
<ion-input type="text" formControlName="myInput"></ion-input>
</ion-item>
<!-- ....... -->
<ion-item [class.myClass]="firstItem.classList.contains('myClass')">
<ion-input value="myValue" readonly></ion-input>
</ion-item>
我的目标是每当firstItem
具有类myClass
时,它将自动添加到第二项中,但是我所得到的只是一个未定义 { 1}}
您知道为什么我以前的代码无法正常工作吗?
谢谢
答案 0 :(得分:2)
问题在于#firstItem
变量引用了ion-item
组件实例,而不是基础HTML元素。组件类没有classList
属性。
您可以使用ion-item
ViewChild
选项访问代码中的read
HTML元素,并检查是否在方法中为该元素定义了类:
@ViewChild("firstItem", { read: ElementRef }) firstItemRef: ElementRef;
public firstItemHasClass(className: string): boolean {
return this.firstItemRef.nativeElement.classList.contains(className);
}
然后在模板中调用该方法:
<ion-item [class.myClass]="firstItemHasClass('myClass')">
有关演示,请参见this stackblitz。