问题标签 [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 投票
0 回答
234 浏览

angular - 是否可以再次运行 ngAfterViewInit?

我想重新调用我的 ngAfterViewInit,因为它负责改变我的 dom 的样式。因此,如果我的组件数据发生更改,我的组件会更新,但我的样式不会应用于新数据。在下面的代码中,我负责显示一些产品信息的组件订阅了可观察的路由器参数。因此,如果我更改路由参数,则信息会在不重新运行我的组件的情况下更改,但不会应用样式,因为不会再次启动组件,因此不会再次调用 afterViewInit。这是我的代码

那么,如果我获得新的产品数据集,如何重新调用我的 ngAfterViewInit 呢?

**重要点----

1- 我不能将我的 ngAfterViewInit 代码放入 params 订阅,因为该代码取决于动态内容。

2-我知道我可以在 ngAfterViewChecked 生命周期钩子中调用 ngAfterViewInit 方法,该方法工作得很好,但我认为我经常调用这些函数。

0 投票
0 回答
129 浏览

angular - Angular - 检测存储的组件是否已重新连接或分离

我实现了一个自定义路由策略(或多或少复制,见这里)来缓存已经访问过的路由。现在我想检测缓存路由中的组件是否已重新附加或分离。

例如:如果已重新附加缓存的路由,我想恢复组件内的视频。

基本上我可以比较它已初始化的路由并订阅路由更改。但我目前正在努力研究如何以最好的方式实现这一点,因为这似乎在每个组件中都实现了。

我一直在寻找 Lifecycle Hook方法,但似乎它们都没有在我的路由策略上执行。

0 投票
1 回答
503 浏览

angular - 在步骤 1 中更改输入字段时重置垫步进器步骤 2 中的值

我正在为我的应用程序使用 Angular 材料步进器。每个步骤都有单独的组件。

父.html:

孩子-1

孩子-2

它的工作原理就像用户在步骤 1 中输入名称时,将从后端加载第二种形式的地址值。如果用户再次更改名称字段,则地址字段将被重置。我可以重置步进器,但它的设计就像步进器重置不应该发生我应该清除步骤 2 内的字段。有什么可能的方法来做到这一点。? 是否可以将子 1 组件中的此字段绑定到子 2 组件的任何生命周期挂钩。请指导我

0 投票
2 回答
1162 浏览

javascript - I got ExpressionChangedAfterItHasBeenCheckedError from child compoenent (timerrenderer), Angular 7

I'm getting the ExpressionChangedAfterItHasBeenCheckedError error from my child component. I tried to add detectChanges() method inside the ngOnchanges but it didn't work. I'm new to angular. I also tried the other questions' solutions but didn't work for me.

0 投票
0 回答
125 浏览

angular - Angular:计数类实例,显示在页面上

大菜鸟,第一个问题。课程项目“测验应用程序”显示一个又一个问题,并在最后显示结果。我想通过计算结果页面上“正确”类的元素数量来添加正确答案的数量。如果需要更多信息或任何其他信息,请告诉我!

到目前为止尝试过:

-test1:“计数”它们并显示得很好,问题是它执行计数时有 0,因为它们还没有创建。

-test2:在使用生命周期钩子 ngAfterViewChecked() 创建它们后对它们进行计数。Console.log 显示正确的数字;但我不知道如何将其转移到模板中。在组件中声明一个变量,让生命周期钩子的函数更改变量,并将变量包含在模板中;但它只是不像 test1() 那样出现在页面上。

结果.component.html:

结果.component.ts:

0 投票
1 回答
28 浏览

angular - 在子组件Angular中注入从url获取的值

我正在尝试从要注入子组件的 Url 中注入一个值。我能够从 url 获取参数并使用属性更新我的 DOM,但是当我将相同的属性注入子组件时,它的行为方式不同。

这是我的父组件

我可以看到 h2 标签发生了变化,但没有看到其他标签

这是我的子组件

我已经尝试过的:

  1. 使用 router 属性作为字符串,然后使用该语法:<h1><app-task-title taskId={{router}}></app-task-title></h1>但结果是相同的。
  2. 使用在 DOM 中返回值的方法。

如果您对属性在 DOM 中的行为有任何解释,欢迎

0 投票
1 回答
170 浏览

angular - 为什么我们使用 - ngAfterContentInit 生命周期方法

我正在学习角度。有很多生命周期方法。例如 ngOnChanges 每次在子组件的输入属性中有新值时运行 - 这些值是按值传递的。

我不明白这个方法 - ngAfterContentInit。在角度文档中说:

https://angular.io/guide/lifecycle-hooks

在 Angular 将外部内容投射到组件的视图或指令所在的视图中后响应。

但这似乎不是很好的解释。有人可以告诉我为什么我们使用并更好地理解一个真实世界场景 - 用例

0 投票
0 回答
69 浏览

javascript - “在Angular首次显示数据绑定属性之后”是什么意思

我一直在关注关于ngOnInit生命周期的 Angular 文档,直到它被说“在 Angular 首次显示数据绑定属性之后”真正感到困惑。顺便说一句,您可以在此处查看文档。我猜这个词display在整个句子的上下文中的含义是,render但它没有任何意义。

我在组件debugger的方法中添加了一条语句,ngOnInit以查看在调用该方法时将显示/呈现什么,但没有呈现任何内容,包括具有数据绑定属性的 DOM 元素,除了没有任何数据的元素 -绑定属性。

那么根据文档说“在Angular首次显示数据绑定属性之后”是什么意思?

0 投票
2 回答
326 浏览

angular - 重新加载页面时的 ngOnDestroy

我正在尝试理解和试验 Angular 生命周期钩子。

关于ngOnDestroy,在官方文档中它说:

当指令、管道或服务被销毁时调用的生命周期钩子。用于实例销毁时需要进行的任何自定义清理。

ngOnDestroy所以,当我重定向页面时,我可以触发事件。ngOnDestroy奇怪的是,当我重新加载页面时,我无法触发。当我重新加载页面时,它不会破坏我的指令和服务吗?为什么ngOnDestroy没有在页面重新加载时触发?

0 投票
1 回答
86 浏览

angular - elementRef的宽度改变时如何改变模板

我尝试在 ngInit 中加载一些数据并将 div 的宽度设置为等于接收到的数据。然后我尝试使用 ViewChild 和 ElementRef 在 ngAfterViewInit 中设置一些样式选项,但我的 elementRef 始终未定义。我该如何解决?

我的组件:

我的模板:

我知道 elementRef 可能由于 *ngIf 指令而未定义,但我不能用 [hidden] 替换它,因为我将不得不替换所有外部 div 块中的指令。我也尝试使用 ViewChild setter,就像这里的 @ViewChild in *ngIf

但随后“Еxpression has changed after it was checked”出现在控制台中。设置超时也无济于事。

如何正确更改模板?