Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >什么是@Output事件名的重命令(以防止本机事件名冲突)?

什么是@Output事件名的重命令(以防止本机事件名冲突)?
EN

Stack Overflow用户
提问于 2016-10-26 20:56:07
回答 1查看 19.7K关注 0票数 36

我玩过角2组件和它们的组合,我遇到了丑陋的行为,这是由本机事件冒泡和@Output名称冲突造成的。

我有组件应用程序表单和模板中的表单。

代码语言:javascript
运行
AI代码解释
复制
<form (ngSubmit)="submitButtonClicked($event)">
  <input type="text"/>
  <button type="submit">Send</button>
</form>

我在应用程序-中间组件中使用这个表单组件,它有自己的事件发射器和名称提交。

代码语言:javascript
运行
AI代码解释
复制
@Component({
  selector: 'app-middle',
  templateUrl: './middle.component.html',
  styleUrls: ['./middle.component.css']
})
export class MiddleComponent implements OnInit {

  @Output() submit = new EventEmitter<string>();

  constructor() { }

  emitSubmitEvent() {
    this.submit.emit("some data");
  }

}

模板:

代码语言:javascript
运行
AI代码解释
复制
<div>

  <app-form></app-form>

</div>

以及带有模板的app组件:

代码语言:javascript
运行
AI代码解释
复制
<app-middle (submit)="submitListener($event)"></app-middle>

现在,submitListener将被调用

  • 当在应用程序中提交时称为(通缉行为)。
  • 当表单被提交时,因为本机事件气泡到顶部(“寄生”行为)

我想,“寄生”行为是基于DOM事件冒泡的。我可以在event.stopPropagation()处理程序中通过submitButtonClicked ()来阻止它,但是如果我忘记了停止它,我会得到非常糟糕的错误。

一般来说,我认为这种行为很危险。如果我没有错,每个事件绑定表达式处理程序都可能被来自内部组件的本机事件称为“寄生”。如果与DOM事件(https://developer.mozilla.org/en-US/docs/Web/Events)的名称相同,并且我不讨论前向兼容性.

您可以在这里看到相同的问题:https://bitbucket.org/winsik/submit-event-issue/src

你遇到这个问题了吗?您如何命名您的@输出?

EN

回答 1

Stack Overflow用户

发布于 2017-07-22 22:11:07

我用组件的名称作为@Output事件的前缀,这似乎非常有效,并提供了一个一致和清晰的约定,以避免您描述的问题。例如,假设我有一个名为TurnEditorComponent的组件-- @Output事件可能被命名为turnEditorChangeturnEditorFocusturnEditorBlur等等。

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40276400

复制
相关文章
在 Vim 编辑器中开发 Python 应用的 Vim 插件
企鹅号小编
2018/01/05
1.8K0
在 Vim 编辑器中开发 Python 应用的 Vim 插件
初探在WSL中设置vim前端开发环境
在之前的 《在win10的WSL中设置前端开发环境》 一文中,介绍了 win10 结合其 linux 子系统(WSL)的前端开发设置,使用的是 VSCode 开发工具。
江米小枣
2020/06/15
2.2K0
在Linux中vim的用法
vi 编辑器是所有 Unix 及 Linux 系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。 由于对 Unix 及 Linux 系统的任何版本,vi 编辑器是完全相同的,因此你可以在其他任何介绍 vi 的地方进一步了解它。Vi 也是 Linux 中最基本的文本编辑器,学会它后,你将在 Linux 的世界里畅行无阻。 1、vi 的基本概念 基本上 vi 可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和
沈唁
2018/05/24
3K0
在FinClip中如何使用小程序插件?
最近总发现很多萌新把小程序插件和小程序组件搞混淆。简单来说,组件和插件的区别在于,插件是可以直接提供服务的,组件是给开发者的轮子提高开发效率的,这是两回事。
海岛船长加西亚
2022/10/19
2.3K0
在IDEA中Jrebel插件安装与使用
在进行java开发的过程中,需要将代码编译为class文件,之后打包为jar文件,如果在tomcat等容器下运行,则需要反复重新部署。这个操作非常耗时和无聊,虽然IDEA和eclipse等有诸多热部署的插件来解决这个问题,Jrebel则是最好的热部署插件之一。 本文介绍在IDEA下如何安装Jrebel及激活该插件。
冬天里的懒猫
2021/03/02
3.9K0
在IDEA中Jrebel插件安装与使用
在vim 中批量添加注释
批量注释: Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I 进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,按两下 ESC,Vim 会自动将你选中的所有行首都加上注释,保存退出完成注释。
程序员小涛
2020/12/03
15.9K0
category在iOS开发中的使用
上面是后端同学按照照module的方式开发的服务,在整个的项目中请求中前缀相同而每个module都有自己的前缀,结合起来整个请求URL格式就可以拆分为
大话swift
2019/11/20
8010
关于在vim中的查找和替换
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。
休辞醉倒
2019/07/25
26.2K0
在Android开发中怎样使用Application类
自己独立开发项目才发现以前对Application类并不是十分了解,现在开始直接搭建一个新项目的框架才重新踩过这个坑。
1025645
2018/08/23
2.2K0
在Android开发中怎样使用Application类
xshell工具在开发中的使用技巧
这个没啥好说的,但是很实用,特别对于单显示器的情况。5.0或以上才支持,鼠标拖拽标签到屏幕某一个位置即可实现。
后端云
2018/10/24
1.5K0
在vim中快速复制粘贴多行
用vim写代码时,经常遇到这样的场景,复制多行,然后粘贴。 我现在这样做: 1. 将光标移动到要复制的文本开始的地方,按V(是大写V)进入可视模式。 2. 将光标移动到要复制的文本的结束的地方,按y复制。此时vim会自动将光标定位到选中文本的开始的地方,并退出可视模式。 3. 移动光标到要粘贴的位置,按p粘贴。
joshua317
2018/04/16
5.2K0
在 Vim 中使用 graphviz.vim 画图
本文主要介绍 graphviz.vim, fork 自 wmgraphviz.vim,但是除了复用补全数据,我几乎重写了所有内容,并做了很多改进。
用户1558438
2019/02/22
1.4K0
在 Vim 中使用 graphviz.vim 画图
在文章中插入超美的音乐播放插件开发记录
是不是有点复杂呢?而且鸡肋呢?没错下一款插件我就准备推出 mokplayer 实现 typecho 遗留问题 音乐播放
乔千
2020/04/16
1.6K0
在文章中插入超美的音乐播放插件开发记录
在sublime中安装sass编译插件
打开sublime,在preference选项下有没有package control这个选项,如果没有的话,就表示你没有Package Control 插件(一个方便 Sublime text 管理插件的插件),这时,你就要从菜单 View - Show Console 或者 ctrl + ~ 快捷键,调出 console。将以下 Python 代码粘贴进去并 enter 执行,不出意外即完成安装。
小胖
2018/09/19
7890
在Android开发中怎样使用Application类(二)
最近项目太紧,都没时间总结写下自己的开发路上的技术心得了。是时候调整下自己的工作和学习节奏了。 接着上次总结的Application类的实际项目使用Android开发中怎样使用Application类,最近我又发现了一个取巧的使用方法,给想要快速开发的同学分享下心得,也是给大家多提供一个思路吧。
1025645
2018/08/23
1.6K0
开发|使用war包部署在Tomcat中运行
简单来说,war包是JavaWeb程序打的包,war包里面包括写的代码编译成的class文件,依赖的包,配置文件,所有的网站页面,包括html,jsp等等。一个war包可以理解为是一个web项目,里面是项目的所有东西。
算法与编程之美
2019/07/17
2.5K0
开发|使用war包部署在Tomcat中运行
点击加载更多

相似问题

在OCaml中实现Coq策略

15

在VIM中开发Java有哪些好的插件?

582

OCaml注释在vim中的不良缩进

27

从Coq中提取Ocaml中的__

11

在Vim中卸载插件

510
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档