angular - 有没有一种简单的方法来隐藏由数组组成的多个元素
问题描述
我试图以最有效的方式隐藏一个元素,但我不知道如何。我喜欢用 Jquery 的方式来做,我给每个元素一个 ID 属性,然后像这样,$("div" + id).hide();
. 有没有办法在角度做到这一点?
我这样做。
HTML
<div *ngFor="let arr of arrs; let i = index">
<div #div1> {{arr.name}} </div>
<div>
<button (click)="hideSomeElement(div1, div2, div3)">
</div>
<div #div2> {{arr.name}} </div>
<div #div3> {{arr.name}} </div>
</div>
我的.ts
let arrs = [
{
id: 0,
name: 'arr1'
}, {
id: 1,
name: 'arr2'
}
];
hideSomeElement(d1, d2, d3) {
d1.hidden = true;
d2.hidden = true;
d3.hidden = true;
}
解决方案
一个更好的方法是为arrs
. 类似的东西visibility
。false
根据id
函数调用传递的 s将其设置为:
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
arrs = [
{
id: 0,
name: 'arr1',
visible: true,
},
{
id: 1,
name: 'arr2',
visible: true,
},
{
id: 2,
name: 'arr3',
visible: true,
},
{
id: 3,
name: 'arr4',
visible: true,
},
{
id: 4,
name: 'arr5',
visible: true,
},
];
hideSomeElement(...divIdsToHide) {
this.arrs.forEach(arr => {
arr.visible = divIdsToHide.indexOf(arr.id) > -1 ? false : true;
});
}
}
在您的模板中:
<div *ngFor="let arr of arrs; let i = index">
<span *ngIf="arr.visible">
{{arr.name}}
</span>
</div>
<button
(click)="hideSomeElement(1, 2, 3)">
Hide Divs
</button>
这是您参考的工作示例 StackBlitz。
推荐阅读
- android - 我在 android studio 中导入了一个项目,但所有标签都给出错误消息
- python - Selenium 与 PC 上传窗口交互?
- reactjs - 在 html Canvas 上获取虚线
- html - 使particle.js 成为背景
- java - POST API 怎么可能在 Postman 中工作而不是改造?
- html - 为 Antd Cascader 添加前缀图标
- python-3.x - 有没有办法断言已在 unittest 模拟对象上设置了属性?
- gremlin - 包括自己的帖子和来自关注用户的帖子
- javascript - 当我们输入密码时,用户会看到 html 页面
- reactjs - 方法“props”意味着在 1 个节点上运行。找到了 0 个