单击外部角度分量

伍特125

我知道周围有很多问题,我尝试了每种解决方案,但没有一种适合我的需求。尝试过的指令,直接在我的组件中尝试过,但是一次都没有起作用。

所以我的情况是这样的;我有一个表格视图,在每个表格视图的末尾,您都可以通过单击一个图标来打开一个小的下拉列表。弹出的下拉列表很小。所以在我的父组件中,它看起来像这样;

<tbody>
    <tr *ngFor="let rows of subscriptionTable.data; let i = index;">
        <td *ngFor="let cell of subscriptionTable.data[i].data"> 
            <!-- Table actions -->
            <div *ngIf="cell.actions && cell.actions.length > 0">
                <app-dropdown
                    [actions]         = cell.actions
                    (onActionClicked) = "handleSubscriptionAction($event, i)"
                >
                </app-dropdown>
            </div>
        </td>
    </tr>
</tbody>

因此,我正在渲染多个子应用程序下拉组件,如下所示;

<div class="fs-action">
  <div class="fs-action__dots" (click)="openActionSheet($event)">
    <span class="fs-action__dot"></span>
    <span class="fs-action__dot"></span>
    <span class="fs-action__dot"></span>
  </div>

  <ul class="fs-action__list">
    <li 
      class="fs-action__item"
      *ngFor="let action of actions; let i = index;" 
      (click)="actionClicked( $event, i )" 
      [ngClass]="{'fs-action__item--danger': action.type === 'destructive' }"
    >
        {{ action.label }}
    </li>
  </ul>
</div>

我现在想做的是,一旦我在fs-action元素之外单击,该下拉列表便消失了。我想在app-dropdown组件内部执行此操作,那么与此组件相关的所有内容都放在同一位置。

但是,一旦我附加了指令或其他任何内容,hostlistener就会在每一行中添加get。然后,每次外部点击都会被触发多次。然后检查我是否在action元素之外单击就成为一种负担,因为这对其他所有元素都为false,而对于活动的元素则为hostlistenerstrue。

这个堆叠闪电事件说明了这个问题。https://stackblitz.com/edit/angular-xjdmg4

我评论了导致内部问题的部分dropdown.component.ts;

  public onClickOutside( event ) {
    // It executes 3 times, for each of the items that is added
    // Even when clicking inside the dropdown, it calls this function
    console.log("click")
  }
查理·索萨

我对类似情况使用了指令。安装:

npm install --save ng-click-outside

然后导入您的模块

import { ClickOutsideModule } from 'ng-click-outside';

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, ClickOutsideModule],
  bootstrap: [AppComponent]
})
class AppModule {}

在你的组件中

@Component({
  selector: 'app',
  template: `
    <div (clickOutside)="onClickedOutside($event)">Click outside this</div>
  `
})
export class AppComponent {
  onClickedOutside(e: Event) {
  console.log('Clicked outside:', e);
  }
}

它有一些选择。您可以在https://www.npmjs.com/package/ng-click-outside中看到它

问候

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击时附加角度分量

来自分类Dev

如何在画布形状单击上动态加载角度分量?

来自分类Dev

测试角度分量

来自分类Dev

禁用整个角度分量

来自分类Dev

在我的新div内部而不是外部创建的角度指令载荷分量

来自分类Dev

关闭弹出窗口,以角度单击外部某处

来自分类Dev

在角度分量中使用“要求”

来自分类Dev

querySelect角度分量作为MyComponent

来自分类Dev

如何观看角度分量的变量?

来自分类Dev

简单的角度分量不显示任何内容

来自分类Dev

使用角度分量会破坏材料布局

来自分类Dev

角度多分量无线电

来自分类Dev

在不同模块中使用角度分量布线

来自分类Dev

从网页设置角度分量输入值

来自分类Dev

将属性用作角度分量中的文本

来自分类Dev

为每个角度分量设置业力

来自分类Dev

选择器的角度 4 分量目标

来自分类Dev

如何访问离子页面中的角度分量?

来自分类Dev

如何使角度分量可重复使用?(角度2+)

来自分类Dev

无法在角度分量中设置绑定属性的值

来自分类Dev

我可以不使用$ ctrl吗?在角度分量模板中

来自分类Dev

如何根据条件动态注入角度1.5分量?

来自分类Dev

如何在角度分量中选择光DOM

来自分类Dev

未解析降级角度2分量的Ng含量

来自分类Dev

在角度分量法的单元测试中出现错误?

来自分类Dev

如何使用ag-grid测试角度分量

来自分类Dev

如何绑定和更改角度的动态分量输入?

来自分类Dev

角度分量上的flex-direction神秘地变化

来自分类Dev

如何为变量输入角度分量[的选择器]?