- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我知道这个问题可能已被问过数千次,但我找不到任何适合 angular2 的正确解决方案。
所以我有一个表,我正在为从服务器获取的每一行设置数据。因此我有一个 ngFor
:
<table class="table table-hover mb-0 hidden-sm-down table-curved">
<tbody>
<tr *ngFor="let module of modules; let index = index" #moduleObject >
<td class="text-center"><md-checkbox></md-checkbox></td>
<td>
<a class="test" (click)="module._clicked = !module._clicked"></a>
<ul class="dropdown-menu table-dropdown" role="menu" [ngClass]="{'table-dropdown-open' : module._clicked}">
<li><a (click)="_showDialogue =! _showDialogue; _getModuleCode(module)">Edit Module</a></li>
<li><a (click)="removeModule(module.Code)" >Remove Module</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
我有一个切换功能,当你点击 3 个点时,它会显示一个下拉框,如下所示:
但是切换功能有两个问题,老实说我不知道如何解决:
1 - 当您点击 3 个点时,前两次点击有效,之后当您点击另一行的 3 个点时它将无效(这意味着您必须双击才能显示下拉菜单.
2 - 目前我的切换效果仅在我必须单击 3 个点时才会发生,但我想实现这一点,当用户单击另一行的 3 个点时,其他任何地方显示的下拉菜单都会隐藏。当用户点击其他任何地方时,它也会隐藏其余的下拉菜单。
第二个对我来说很难,所以我有一个非常低效的隐藏下拉列表的方法。
CloseAllDropDown() {
//console.log(a)
var dropdown = document.getElementsByClassName('table')[0].querySelectorAll('ul');
for (let i = 0; i < dropdown.length; ++i) {
document.getElementsByClassName('table-dropdown-open')[0].classList.remove('table-dropdown-open');
}
}
如何实现以上两个列表?
<tbody>
<tr *ngFor="let module of modules; let index = index" #moduleObject >
<td class="text-center"><md-checkbox></md-checkbox></td>
<td (clickOutside)="visible = false">
<a class="test" (click)="module._clicked = !module._clicked"></a>
<ul class="dropdown-menu table-dropdown" role="menu" [ngClass]="{ 'table-dropdown-open' : module._clicked }" >
<li><a (click)="_showDialogue =! _showDialogue; _getModuleCode(module)">Edit Module</a></li>
<li><a (click)="removeModule(module.Code)" >Remove Module</a></li>
</ul>
</td>
</tr>
</tbody>
最佳答案
你可以创建指令:
import {Directive, ElementRef, Output, EventEmitter, HostListener} from '@angular/core';
@Directive({
selector: '[clickOutside]'
})
export class ClickOutsideDirective {
constructor(private _elementRef: ElementRef) {}
@Output()
public clickOutside = new EventEmitter<MouseEvent>();
@HostListener('document:click', ['$event', '$event.target'])
public onClick(event: MouseEvent, targetElement: HTMLElement): void {
if (!targetElement) {
return;
}
const clickedInside = this._elementRef.nativeElement.contains(targetElement);
if (!clickedInside) {
this.clickOutside.emit(event);
}
}}
然后你可以在你想要的地方调用它。例如:
<div (clickOutside)="visible = false"</div>
关于html - Angular2 在 ngFor 中显示/隐藏下拉列表,并在其他任何地方单击时隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42429357/
我有 Angular + Firebase 应用程序。在我的一个组件中,我从 Firebase DB 获取元素并使用 *ngFor 将它们绑定(bind)到模板中: {{ comment.te
以下场景在 javascript 中会很简单,但我在 Angular 中遇到了一些问题。 我有一个像这样的数组: array a = ( "id" = 0, name = random(), colu
我有一个由部分组成的 firebase json 对象。部分内部还有部分线程。我正在尝试迭代这些部分,然后迭代线程。问题是我收到此错误 InvalidPipeArgument:管道“AsyncPipe
我无法在任何地方找到对差异的准确描述。与 *ngIf 和 ngIf 相同 *ngFor的例子 和一个ngFor的例子 最佳答案 区别在于*ngFor转换为 ) 允
这是一个我想实际解决的示例问题。我们将非常感谢您的帮助。非常感谢! 最佳答案 除非将其中一项设置为变量,否则无法直接显示 *ngFor 之外的一项
我如何在 Angular 2 中使用 *ngFor 遍历多维数组。下面是我使用的 DOM 包装器: 0 }"> {{menuName.name}} Pages
标题可能看起来很奇怪,但我所说的基本上是this link。正在做。 我正在寻找一种方法来使用当前迭代的 person在在*ngFor之外范围。 在他使用的链接中 ng-repeat-start和 n
我有以下对象: itemList = { "0": [], "1": [], "2": [], "3": [] }; 我还有以下 *ngFor: 如您所
我试图在我的 Angular 应用程序中显示对话列表,然后在每个对话标题下显示这些不同对话中包含的消息。 这是我最新的代码- HTML: {{ conversation.conversat
我想从 *ngFor 中删除 *ngFor 中的项目。 当我删除回复“test2”时, 在我添加其他回复后,“test3”变为空。
在表头中,我有动态列和搜索排序功能。但对于特定的列,我需要禁用排序功能。在表中 {{colName}}
我是 Angular 2 的初学者。我正在尝试创建一个具有动态表单的表,创建了表并且还绑定(bind)了值但是我无法访问 formControlName 中的值,尝试了下面的代码但它没有用。 有人可以
我正在使用Flowbite(flowbite.com),这是一个Tailwind CSS插件,正如你在我的Angular项目中所知道的。。一切都工作得很好,除了当我调用一个抽屉按钮内的表,这是渲染与n
{{ recipe.name }} {{ recipe.description }} 由于这条消息,我不能在这
我如何使用 ngFor 循环遍历以下对象数组并仅获取月份的名称? { "Jan": { "name": "January", "short": "Jan", "number
我正在 Angular 6 中开发一个 Web 应用程序。我从 Firebase 收到一组对象,并尝试使用 ngFor 向用户显示详细信息。我的对象数组是这样的: export interface C
抱歉,我不能在这里发布所有代码。但是,如果你能给我一些关于需要做什么的提示,我将不胜感激。 让我试着解释一下我的困境。 所以,这是我一直在尝试使用的代码片段 ngFor和 ngIf上:
我正在用数组中的数据填充表格,我想将自定义输入集中在表格的最后一个元素上,所以我有这个: {{ a few table fields}}
我有来自服务器的以下 JSON 响应: stuff = [ { "_id":"59080892c88561d46736a18d", "name":"Miscellaneo
我使用以下方法创建了一个 Angular 库: ng new my-workspace --create-application=false cd 我的工作区 ng 生成库 my-lib 图书馆工作。
我是一名优秀的程序员,十分优秀!