问题标签 [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.
angular - 如何初始化@Input?
我试着这样做:
在 ngOnInit 里面我看到undefined
:
因此,在下面的代码中,当我尝试获取长度时出现错误:return this.data.length;
因为它是未定义的。
为什么初始化默认不起作用?
angular - 角度指令可以监听主机生命周期钩子吗?
我想创建一个能够在任何主机组件上的角度指令,并在主机的 ngOnChange 触发时使主机组件背景闪烁绿色。
我试图通过 viewContainerRef 访问(在指令中)主机 ngOnChange 方法,但找不到它。
从来没有罚款 ngOnChange 方法,也许我的所有方法都是错误的?我该怎么做?
angular - 在模板中使用函数时如何停止角度函数的多次触发?
我在 HTML 模板中使用函数,我不能直接使用变量,因为条件不太复杂。
我的问题是模板中的函数被多次调用。
例如这个 Stackblitz (最小的,可重现的例子)
加载时记录get Name was called
4 次,单击更改版本按钮后再记录 2 次。
我想在加载时调用一次,每次点击只调用一次。为了性能,我怎样才能做到这一点
angular - 没有在动态组件上调用 ngOnInit
我在一个项目中使用 Angular 8,但我无法启动动态组件,因为 ngOnInit 没有被调用。我已经构建了一个名为 PlaceholderDirective 的指令,如下所示:
并在 ng-template 上使用了该指令:
包含 ng-template 所在的 HTML 的组件会启动动态组件,如下所示:
实际的动态组件非常简单,注册在 AppModule 的 entryComponents 部分。我已将其缩小到最低限度,以了解问题所在:
最后,动态组件的 HTML:
问题是动态组件中的 ngOnInit 没有被调用,我有其余的数据要在那里初始化,这样我就可以构建模板的其余部分。
真正奇怪的部分是,如果我的控制台没有打开,我打开它,反之亦然,模板就会显示出来。
angular - Angular 生命周期钩子是否在嵌套组件结构的每个组件上调用?
这只是一个概念问题。我正在尝试更多地了解 Angular 生命周期钩子是如何工作的。
我的问题是,如果我有如下嵌套的组件结构:
例如,如果为一个组件激活了 onChanges 生命周期钩子,是否会为所有子/兄弟组件激活它?
如果答案是否定的,是否有一种非 hacky 的方式来实现某些东西来复制该行为,或者它是否不受支持?
angular - 如何在使用 observable 更新数组时更新 *ngFor 以及如何在网站加载时初始化 observable?
我有两个组件“购物车”和“家”。这里的“主页”组件显示产品列表,它是网站的第一页。当有人使用“购物车”按钮将产品添加到购物车时,我想更新购物车。为此,我创建了一个使用 observable 将消息从“home”发送到“cart”组件的服务。
我面临的问题: 1. *ngFor 在使用 observable 更新数组时没有更新。2. 当我在 ngOnInit() 上初始化 observable 时,购物车数组仅在我访问购物车组件至少一次时才会更新。
home.component.ts
购物车.service.ts
购物车.component.ts
购物车.component.html
我尝试了“ChangeDetectorRef”、markForCheck() 和 detectChanges(),但这些都不起作用。
angular - 创建一个指令来监视角度生命周期钩子
是否有一个指令来检测像 ngOnDestroy() 这样的每个生命周期钩子,并在组件被销毁之前实现一些垃圾收集器?
我想这样做是为了避免组件让某些东西运行并导致内存泄漏
angular - 为什么角度生命周期钩子看起来是同步的
我有一个带有一些生命周期钩子的组件。
同步是指一个接一个地执行钩子。
有两种情况
它们是同步的 - 然后最后的 setTimeout 调用本身就是合理的。但是有人可以指点我任何 Angular 文档或 Angular 代码来支持它。
如果没有 - 谁能帮我理解为什么 setTimeout 最后运行。
我知道事件循环是如何工作的,并且生命周期钩子是按顺序运行的,但我的问题是 Angular 是如何实现它的?当我在 chrome 调试模式下查看调用堆栈时,我没有找到任何序列。
是否保证上面示例中的 setTimeout 将在上述所有钩子之后运行?
angular - Angular 6 app 组件和子组件执行
我正在使用 Angular 6 开发一个应用程序,我正在寻找一些帮助/指导。下面是我的应用程序组件。
app.component.html
--标题--
-- 路由器插座--
--页脚--
我正在调用两个可观察的 http 服务来获取 app.component 的 ngOnInit 中的数据,并将值存储在浏览器的 sesionStorage 中。这两个调用在另一个中发生。我正在尝试读取我的子组件的 ngOnInit 中的 sessionStorage 对象,但调用并没有按我预期的方式发生。
预期的:
-- 应用组件 - ngOnInit -- 服务 1 调用 --
-- 应用组件 - ngOnInit -- 服务 2 调用 --
-- 应用组件 - ngOnInit -- 将结果存储到 sessionStorage --
-- 子组件 - ngOnInit - 从 sessionStorage 中读取对象--
实际的:
-- 应用组件 - ngOnInit -- 服务 1 调用 --
-- 子组件 - ngOnInit - 从 sessionStorage 中读取对象--
-- 应用组件 - ngOnInit -- 服务 2 调用 --
-- 应用组件 - ngOnInit -- 将结果存储到 sessionStorage --
由于子组件无法从 sessionStorage 读取对象,因此失败。我试图了解我在这里缺少什么?
TIA
angular - 如何在 Angular 8 中实现 ngInit?
我正在尝试在 Angular 8 代码中实现 [ngInit],如此链接ConvertingAngular1To2ngInit中所述
,它几乎对我有用,但问题是它执行了不止一次,在某些情况下它进入无限循环或几乎无限,它使我的崩溃整个页面。所以我尝试将函数放在 html as 中{{functionName(5)}}
,即使我将它放在*ngIf
指令中,它也会执行多个。我什至开始了新项目,只是把函数放在 html 中,至少它执行了四次我搜索了很多这个问题,并陷入了角度生命周期钩子,但什么也不懂。