问题标签 [angular-lifecycle-hooks]

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 投票
18 回答
197601 浏览

angular - Angular2 更改检测:ngOnChanges 未触发嵌套对象

我知道我不是第一个问这个问题的人,但我在前面的问题中找不到答案。我在一个组件中有这个

在控制器rawLapsdata中会不时发生变异。

laps中,数据HTML以表格格式输出。这会随着rawLapsdata变化而变化。

我的map组件需要ngOnChanges用作触发器来重绘 Google 地图上的标记。问题是当父级发生更改ngOnChanges时不会触发。rawLapsData我能做些什么?


更新: ngOnChanges不起作用,但看起来好像lapsData正在更新。在 中ngOnInit是一个用于缩放更改的事件侦听器,它也调用this.drawmarkers. 当我更改缩放时,我确实看到标记发生了变化。所以唯一的问题是我在输入数据更改时没有收到通知。

在父母中,我有这条线。(回想一下,变化反映在圈数中,但不反映在 中map)。

请注意,this.rawLapsData它本身就是一个指向大型 json 对象中间的指针

0 投票
27 回答
675231 浏览

angular - 构造函数和 ngOnInit 的区别

Angular 默认提供生命周期钩子ngOnInit

为什么应该ngOnInit使用,如果我们已经有一个constructor

0 投票
4 回答
26799 浏览

angular - Angular2 -- ngAfterViewChecked 被多次调用..如何在 DOM 完全加载后只调用一次方法?

我需要在使用时将jquery插件应用于单选按钮。Angular2Typescript

如果我分配 in ngAfterViewChecked,它会被多次调用并且控件会被多次刷新。

DOM 准备好后调用 javascript 方法的替代解决方案是什么?

0 投票
5 回答
60338 浏览

angular - 如何在 Angular 2 中再次调用 ngOnInit()?

请在这段代码中解释一下,ngOnInit()当我调用另一个方法时如何再次调用?

0 投票
2 回答
12029 浏览

angular - ngOnInit()、ngAfterViewInit()、ngafterContentInit()、ngAfterViewChecked() 和 constructor() 有什么区别?

ngOnInit ()、ngAfterViewInit ()、ngafterContentInit ()、ngAfterViewChecked ()和构造函数()有什么区别?我们如何在 Angular 2 中实现它们?它们的用途和用途是什么?它在哪里对实施它们有用?

谢谢。

0 投票
1 回答
1328 浏览

javascript - Angular 2+ Window attribute undefined

I'm using an external library that attaches itself to the global window object (window['lib']) once the library's javascript file is loaded by the browser. I'm trying to invoke code using this library whenever a component is loaded, however everytime I try to access the object it is undefined (due to the library not having been loaded). I have tried every lifecycle hook I can think of, however nothing appears to wait for the DOM to be fully ready. For example, I want to do something like this:

If I wrap it in a timeout, then it becomes available. However, this looks like code smell and do not want to approach it this way:

What is the best / suggested / "most angular way" to approach this problem? Thanks!

0 投票
2 回答
1100 浏览

angular - 从嵌套组件中获取 url 参数

我开发了一个 MEAN 堆栈应用程序,对于前端我使用 Angular。在 Angular 中,我使用导航栏和侧导航栏,它们是我的布局框架。然后路由显示在mat-sidenav-content -> ng-content这里:

框架组件 HTML

其他组件正确显示。但是,我想像这样从框架组件访问 url:

它不起作用,因为它是未定义的,而如果我在其他组件中执行它,它会起作用。我认为这是因为 FRAMEWORK 组件未在路由器中定义,因此该组件没有 URL。

我尝试使用共享数据服务。像这样我在其他组件中设置了 id 值,框架组件可以使用它。但它不起作用,因为框架组件是在其他组件之前加载的。

0 投票
0 回答
136 浏览

angular - 使用嵌套的 for 循环了解 Angular 的生命周期钩子和模板

一直在努力解决我在处理一些现有代码时遇到的问题。

它是一个在 HTML 中带有选择器的组件,如下所示:

和具有这种结构的模板(释义):

变量 1 和 2 设置为@Inputs

它们是可选的。所以我们想要做的是检查它们是否在选择器中被赋予了一个值。如果是这样,我们将模板中的变量设置为该值。本质上是将选择器中的变量值传递到我们的模板中以呈现内容。

所以第一个的逻辑是这样的:

这很好用。模板将 content1 呈现为通过 @input 传入的 variable1 的值。

但是,我不能将 variable2 的相同逻辑放入ngAfterContentInit(). 这样做会导致this.content2为空。

我发现我可以将相同的逻辑设置this.content2ngAfterViewChecked()钩子内部,它会在那里工作。但是,它只“需要”第二次ngAfterViewChecked()被调用(以及之后的每次)。

我唯一的想法是第一个生命周期钩子不等待 for 循环完成。当存在 for 循环时,我觉得我缺少对将变量传递到模板的理解。

目前,我的解决方案是获取 variable2 的值ngAfterContentInit()并将其传递给第三个变量,然后我用它来设置 content2 in ngAfterViewChecked()。我有一个计数器,所以我只尝试设置它两次(任何进一步的调用ngAfterViewChecked()都不会尝试重置 content2)

不过,这感觉非常难看!

0 投票
2 回答
234 浏览

angular - 如何以角度创建“ngOnActive”生命周期挂钩?

我希望当我的组件在主页上处于活动状态时调用生命周期挂钩。

它的登录页面。

当我的组件在主页上时,即处于活动状态时,我想查看我是否已经拥有以前登录的登录令牌,并且根据结果我想导航到不同的页面。

如果没有,是否有任何“ngOnActive”钩子,那么如何创建它?

还是有其他方法可以实现这一目标?

我的代码:

0 投票
1 回答
1432 浏览

angularjs - AngularJS 纯 ng-controller 生命周期钩子

假设使用指令声明的纯AngualrJS (1.6.x)控制器ng-controller(与组件控制器相反)。

它有生命周期钩子吗$onInit$onDestroy