问题标签 [angular-component-life-cycle]

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 回答
93 浏览

angular - 我们可以为所有 Angular 组件的 ngAfterViewInit 方法实现逻辑吗?

总而言之,我正在寻找一种通用方法来ngAfterViewInit为大型 Web 应用程序中的所有组件实现方法。

原因是我们需要跟踪每个页面的加载时间,所以为了做到这一点,我需要将检查解决方案放入ngAfterViewInit要检查的组件的方法中。

问题是组件太多,页面太多,如果我使用抽象类或者直接将逻辑放入方法中,我必须触摸所有组件并一一更新,这根本不是通用的。

所以我想知道是否有一些通用的解决方案可以在一个地方添加逻辑并被所有组件自动调用。

0 投票
1 回答
36 浏览

angular - 更改来自库的组件的选择器

语境

我正在开发一个用户界面库 - 它本身正在使用另一个提供自己的组件的 Angular 库(为了示例,我们假设它是 Angular 材质库。提供的一些组件非常适合,我我想简单地将它们“交给”我图书馆的消费者。

问题

但是,为了保持一致性,我想有一个注释前缀:mat-button我想使用选择器而不是foo-button

有没有办法实现这种行为?要“重命名”组件的选择器?

我想在不将使用的组件包装到另一个组件中的情况下实现这一点,因为这将迫使我编写(和维护)我自己的方法来模仿包装组件的 API 并委托给包装组件。

0 投票
2 回答
47 浏览

angular - 被破坏的组件的属性可以通过订阅访问 - 如何?

我有这个示例 stackblitz,我在其中为组件设置了一个“id”,您可以通过复选框创建和销毁该组件。每次创建组件的新实例时,都会给它一个递增的 id。在每个组件中,都有一个interval哪个控制台记录组件的 ID。我没有在销毁时取消订阅它。正如预期的那样,组件被销毁后我继续看到日志。让我感到困惑的是,不知何故,interval它仍然知道它来自哪个组件,并且在引用它的 id 时不会引发错误。如果组件被销毁,它的属性如何仍然可以访问?该组件是否仍然以某种方式存在,从而造成内存泄漏?

0 投票
0 回答
21 浏览

angular - 记录Angular中每个组件或主要组件所花费的总时间

我有一个包含 10 多个组件的页面,每个组件都有子组件。我们有 100 多个 API,它们在页面加载时被组件调用以检索数据。这是已经开发的页面,所以没有重新开发的选项。我需要对此进行优化。

在开始之前,我想记录每个组件的 OR 至少由主组件加载数据和渲染整个页面所花费的时间。总时间应包括 API 调用、渲染 DOM、完成所有子组件加载、间隔和超时以及所有更改检测。

我借助 Constructor(start time) 和 ngAfterViewChecked(End time) 生命周期钩子,将控制台日志与时间放在一起,并在每次更改检测时将其登录到控制台,我将最后一个日志视为结束时间。但是使用这种方法,我需要将这个控制台日志放在每个组件上,而且它会多次打印日志,所以我认为这不是一个正确的解决方案。

我看到了 Zonejs,但不确定这对我有什么帮助。

Angular中有什么东西可以用来记录页面的开始和结束时间吗?