问题标签 [angular-event-emitter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
218 浏览

angular - 如何监视在角度 7 中单击的 dom 用户

我想监控用户在角度应用程序中的点击,而不是想为每个点击事件手动配置,我想要一些更高级别的东西,告诉我每次用户在应用程序中点击的位置。

0 投票
6 回答
156 浏览

angular - 如何在没有HTML交互的情况下在Angular 6的component2中使用component1的功能?

我在 Component1 中有 testTry() 函数,它接受一个参数并打印该值。

我有一个带有函数 sampleCall() 的 component2,在其中我需要通过发送参数来调用 component1 的函数

我如何在不涉及 HTML 的情况下从 component1 调用一个函数到 component2?

0 投票
0 回答
1201 浏览

angular - 暂时停止监听组件上的事件发射器

我有一个通用组件 [date-range-selector],在此组件中,当日期值更改时,它会发出新值

现在在我的应用程序上,我有一个 [Clear Filters] 按钮,它将日期范围重置为默认值,但这会导致组件再次触发 changeEvent.emit 代码

如何禁用发射器,更改值然后重新启用发射器,或者我是否以错误的方式解决这个问题?

我可以从父级中删除我的侦听器,然后动态重新附加它吗?

这是我的过滤器栏中的组件

在so-date-selector里面我有这个

updateRange 调用 emit 函数,然后在我的父组件中

然后在服务中

因此,当我检查 this._service.filtersInitialised 时,我的其他过滤器都没有触发该事件,但是日期选择器被触发,我的猜测是因为它在我重置布尔值后发出

希望这让它更清楚一点

所以我之前在上面是this._isInitialised && this.emitEnabled

emitEnabled 是一个布尔值 Input()

然后在我的消费者中,我在重置日期值时设置了 emitEnabled = false ,然后再次启用它,但仍然触发了发射,所以我的想法是子控件在父控件后面运行,所以当它到达布尔值的发出函数时恢复了真实

【最后更新】我觉得答案很简单,这个做不到,因为没有意义。这是我关于为什么的基本工作流程思考

好吧,假设我们有 3 个组件 Parent - Child - Alarm

父母正在听正在听警报的孩子

如果我将父母设置为不听孩子的话,然后在闹钟上启动一个计时器,然后再次开始听孩子的话。当闹钟响起时,孩子会通知父母,因为它又在听了。即使当父母被设置为不听时导致该动作发生的原因

所以我现实生活场景中的问题是,由于某种原因很慢,并且在我再次开始收听后通知我。

0 投票
2 回答
2893 浏览

angular - 从动态创建的子组件向父组件发出事件

我有一个滑块,其中是动态创建的项目 - 这些是子组件。

滑块的 ng-container 父模板在哪里:

这些子组件由 appSliderForm 指令创建:

在我的子组件中,我有一个移除功能,用于从滑块中移除自身。

当通过单击子组件模板中的删除图标调用此删除函数时,我想发出事件以告知父组件以根据其进行其他操作,但未调用父组件中的函数removeQuestion

你能告诉我为什么不叫这个removeQuestion函数吗?

更新

我在 chrome 浏览器中对其进行了调试,当在 onRemove 对象上调用emit函数时,我看到我的onRemove EventEmitter 对象的观察者数组属性中没有任何值。

调试

0 投票
1 回答
812 浏览

angular - 如何在不刷新组件属性更改的整个页面的情况下更新 DOM

我的页面结构是:

我有一个 JSON 包含个人信息和多个地址,其中包含公共字段“名称”。

如何在更改一个组件“名称”字段时更新/刷新所有地址组件,而不刷新整个页面?

0 投票
0 回答
350 浏览

angular7 - this.xxxx.emit 不是函数

//第一次捕获值,但失败后
@Output() putSelectedCommand = new EventEmitter();

0 投票
1 回答
75 浏览

angular - 角度4中的多个组件中的事件捕获

我有一个名为地址的组件,它多次呈现家庭地址和办公室地址,在更改一个我想更新另一个时,我已经编写了 sharedService 并使用了 eventemmiter。但它捕获相同的组件而不是另一个..我期待“地址”日志两次

0 投票
2 回答
755 浏览

angular - ng-template 中组件的 EventEmitter 被组件的不同实例捕获

我创建了一个带有事件的组件,我们称之为(onAction)。在同一个父组件或页面中,它在两个地方使用(它们本身就是组件)。不同之处在于 ng-template 中使用了一个地方,该模板用于模态(确切地说是来自 angular - bootstrap4 库的 NgbModal)。

不在 ng-template 中的那个可以正常工作。但是,当触发 ng-template 内部的事件时,就好像它没有与 onActionB 绑定一样,并且该事件被其他组件捕获。

这是一些需要明确的通用代码,为简单起见,我们将其称为组件“comp”,以及使用它的两个父组件“parentA”和“parentB”

当 #someModal 被渲染时,就好像 (onAction) 与 parentA 中的 onActionA 绑定一样。它触发 onActionA($event) 而不是 onActionB($event)。奇怪的是,如果我注释掉 parentA 中的 comp,然后触发 parentB 中的 onActionB。

0 投票
2 回答
1171 浏览

javascript - EventEmitter 的 Emit 方法不向订阅者发送值

所以我试图通过一个服务连接两个组件,LoaderComponentAppComponent使用LoaderService,以便当应用程序获取数据时,一个加载器会出现。但是,当我尝试使用 anEventEmitter向组件发出更改时,它们不会得到更改,但是当服务订阅自身时,它可以获得更改

加载服务.ts

我希望从LoaderService订阅者那里获得事件

0 投票
1 回答
753 浏览

angular - 如何将更改的对象作为主题发出并仅订阅一个键更改?

我有一个侧边栏,当您对其进行更改时,我需要订阅这些更改并对它们做出反应,因此我们使用的是主题。

问题是我们不知道 Subject 的最佳架构,它应该是发出的单个字符串还是对象?

如果我们将所有更改的对象作为键:值对发出,我们如何在其他地方仅订阅其中一个更改而不是对整个对象做出反应?

我想避免每次更改都使用主题发射器污染我的代码,或者这是“最佳实践”

当前实施的示例

发射器

那么订阅的最佳方式是什么