问题标签 [ngonchanges]

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 投票
2 回答
1674 浏览

javascript - OnChanges 不会在部分对象更改时触发

我在触发 Angular(6) 的onChanges生命周期挂钩时遇到问题。在将参数从组件发送到指令时,我想挂钩更改。

触发器完美地适用于一维变量,而对象未正确触发。特别是如果多维对象的一部分被传输到子指令。至少它有效,但OnChange钩子只触发一维变量。

仔细查看 StackBlitz,我在其中提供了一个可执行示例。介意打开控制台,看看,触发了哪个生命周期: https ://stackblitz.com/edit/angular-vhaews

app.component.ts

app.component.html

canvas.directive.ts

免责声明:这个问题是一个更大问题的一部分,我试图找出主要问题。所以请不要看太多细节,它实际上是关于生命周期钩子和多维对象。

0 投票
5 回答
12998 浏览

angular - Angular ngOnInit() 和 ngOnChanges() 有什么区别?

Angular 默认提供生命周期钩子 ngOnInit() 和 ngOnChanges()。如果我们已经有一个 ngOnChanges,为什么还要使用 ngOnInit?还有构造函数。

0 投票
1 回答
785 浏览

angular - Angular5:ngOnChanges 被称为非常慢

我正在使用 Angular 5。我有一个简单的父组件和一个子组件。从父组件我将 searchTerm 传递给子组件。子组件使用 searchTerm 文本来搜索并在表格中显示结果。然而,一切正常。在搜索框中输入 searchTerm 后大约 15 秒后调用 ngOnChanges。控制台或网络中没有活动。我不确定为什么这么晚才调用 ngOnChanges。在 15 秒内调用后,搜索工作和结果显示速度非常快。在同一页面上,我使用 Web Socket 连接来显示通知。我尝试注释掉执行 Web 套接字连接的代码。但是,即使在那之后搜索也很慢。如果您有任何想法,请告诉我。

0 投票
1 回答
719 浏览

angular - ngOnChanges 不间断地触发并使应用程序不响应

我构建了一个名为“gw-responsive-tabs”的组件,该组件具有一个带有变量(navLinks)的输入,该变量是我要显示的选项卡的数组。当我像这样从 html 传递输入数据时:

然后一切都按预期工作,我可以看到 2 个选项卡。

如果我更改它并使用 getter 或函数发送相同的数据,那么 gw-responsive-tabs 组件的 ngOnChanges 会以非常高的频率不间断地触发,并且从那时起,chrome 没有响应。

和html:

有什么想法会导致这种现象吗?

0 投票
3 回答
5038 浏览

angular - 检测 @Input 属性角度 4 的内部变化

我知道 ngOnChanges 是在其父组件的组件 @Input 属性时触发的。但是我如何检测 @Input 属性是否在其组件中发生更改。我一直无法找到一个好的答案。谢谢

0 投票
0 回答
1258 浏览

angular - ngOnChanges 没有触发

changeEnt()如果我运行方法,我无法弄清楚为什么 ngOnChanges 会被执行,而如果我点击 GoogleMaps 标记则不会被执行。

这是我的父组件

这是我的父组件模板

这是我的子组件

如果我加载地图并单击标记markerClickHandler(),则会执行,但不会拦截更改。

否则,如果我单击 html 按钮Change ENtchangeEnt()执行更改,则会被拦截。

我引入了一个超时来检查问题是否是由于上下文的变化,但似乎不是

0 投票
0 回答
145 浏览

javascript - Angular ngOnChange 事件未在 Firefox 上触发

此问题仅在 Firefox 上发生,在 Chrome 和 Safari 上运行良好。我不知道为什么会发生这种情况,我一直在谷歌搜索和堆栈溢出,但他们都没有遇到和我一样的问题。

整个 web 应用程序在 Firefox 上根本没有交互。按钮单击但没有任何反应。(如果是路由链接,它将导航。)这是问题的简单版本。

例如,我有一个重新生成一些数据的按钮。然后该数据传递给子组件(图形组件)进行绘图。我在三个地方放置了控制台日志。

  1. 点击事件回调。
  2. 数据生成方法。
  3. 子组件的 ngOnChange()。

我已经打开了 chrome 和 firefox 浏览器。Chrome 会打印所有三个日志,但 Firefox 只打印前两个。所以我最初的结论是点击事件被触发,数据已经生成,但是 ngOnChange 事件在 Firefox 中没有被触发。

以前有没有人遇到过同样的问题,或者它与 ngOnChange 生命周期无关?

更新: ngOnChange 确实在开始时触发

0 投票
1 回答
223 浏览

angular - ngOnChanges 没有被触发

您好,我是 Angular 新手,遇到了一点问题,这是我的代码:

在 ngOnInit 中,我每 5 秒收集一次数据并将这些数据存储到我的消息变量中,这是一个 Input(),所以它应该每 5 秒触发一次 ngOnChanges 吗?我错过了什么?

0 投票
1 回答
151 浏览

javascript - Angular 6 检测图表的变化

我正在使用 angular 6 和 Leaflet 进行映射。我想创建一个交互式地图,根据我在表单中选择的属性更改视图。

我已经设置了在 ngOninit 中绘制图形的条件,但是该条件仅在加载应用程序时才有效,而我希望它在每次修改表单时都有效。

有人可以让我上轨道吗?

组件.ts

组件.HTML

0 投票
2 回答
364 浏览

angular - Angular ngOnChanges 不会被调用

当 Input 属性发生变化时,Angular 不会调用变化检测。我已经读过,除非绑定发生变化,否则 Angular 不会调用 onChanges,但在此示例中,我已将输入绑定到 ng datePicker 模型,但仍然没有调用 ngOnChanges。

下面是附加的 stackBlitz 示例: https ://stackblitz.com/edit/angular-zvpice