0

0

Angular 组件生命周期初学者指南

DDD

DDD

发布时间:2024-11-10 12:30:02

|

617人浏览过

|

来源于dev.to

转载

angular 组件生命周期初学者指南

在深入研究生命周期挂钩之前,有必要对一些核心主题有基本的了解。根据 angular 文档:

先决条件 在使用生命周期钩子之前,您应该对以下内容有基本的了解: typescript 编程 angular 应用程序设计基础知识,如 angular 概念 中所述

一旦您熟悉了这些先决条件,您就可以探索 angular 提供的强大的生命周期钩子了。

angular 组件生命周期是 angular 组件如何创建、更新和销毁的核心。了解这些生命周期使开发人员能够控制组件在其整个生命周期中的行为,从而增强功能和用户体验。在本文中,我们将分解 angular 组件生命周期挂钩,提供示例并解释其典型用例。

angular 中的生命周期钩子是什么?

angular 提供了多个生命周期钩子,开发人员可以利用这些钩子在组件生命周期的不同阶段执行特定代码。从初始化组件到销毁它,这些钩子帮助管理组件的状态、行为和资源清理。

这是 angular 中所有生命周期钩子的列表:

  1. ngonchanges
  2. ngoninit
  3. ngdocheck
  4. ngaftercontentinit
  5. ngaftercontentchecked
  6. ngafterviewinit
  7. ngafterviewchecked
  8. ngondestroy

每个钩子都有特定的用途,并在组件生命周期的特定时间被调用。让我们深入了解每一个。


1、ngonchanges

用途:输入属性更改时调用。

这是构建组件后调用的第一个生命周期钩子。每次输入属性的值发生变化时都会触发 ngonchanges 方法。当您想要执行代码以响应组件绑定输入属性的更改时,它特别有用。

示例:

import { component, input, onchanges, simplechanges } from '@angular/core';

@component({
  selector: 'app-sample',
  template: `

{{ data }}

` }) export class samplecomponent implements onchanges { @input() data: string; ngonchanges(changes: simplechanges): void { console.log('data changed:', changes.data.currentvalue); } }

2.ngoninit

用途:在组件第一次 ngonchanges 之后调用一次。

ngoninit 钩子是大部分初始化代码所在的地方。这是初始化属性、设置任何所需订阅或进行组件所依赖的 http 调用的好地方。

示例:

import { component, oninit } from '@angular/core';

@component({
  selector: 'app-sample',
  template: `

{{ info }}

` }) export class samplecomponent implements oninit { info: string; ngoninit(): void { this.info = 'component initialized!'; } }

3.ngdocheck

用途:在每次更改检测运行期间调用。

ngdocheck 钩子允许您实现自己的变更检测算法。这对于跟踪 angular 本身无法检测到的对象的深层变化非常有用。不过,请谨慎使用,如果使用不当,可能会影响性能。

示例:

import { component, docheck } from '@angular/core';

@component({
  selector: 'app-sample',
  template: `

{{ count }}

` }) export class samplecomponent implements docheck { count: number = 0; ngdocheck(): void { console.log('change detection running'); this.count++; } }

4.ngaftercontentinit

用途:在第一次 ngdocheck 之后调用一次。

Android开发指南中文pdf版
Android开发指南中文pdf版

Android开发指南中文pdf版,学习android的朋友可以参考下。应用程序基础Application Fundamentals 关键类 应用程序组件 激活组件:intent 关闭组件 manifest文件 Intent过滤器 Activity和任务 Affinity(吸引力)和新任务 加载模式 清理堆栈 启动任务 进程和线程 进程 线程 远程过程调用 线程安全方法 组件生命周期 Activity生命周期 调用父类 服务生命周期 广播接收器生命周期 进程与生命周期 用户界面User Interface

下载

这个钩子在 angular 将外部内容投影到组件中后被调用。它对于用于在模板中包含外部内容的组件特别有用。

示例:

import { component, aftercontentinit } from '@angular/core';

@component({
  selector: 'app-sample',
  template: ``
})
export class samplecomponent implements aftercontentinit {
  ngaftercontentinit(): void {
    console.log('content projected');
  }
}

5.ngaftercontentchecked

用途:每次检查投影内容后调用。

每次 angular 检查投影到组件中的内容时都会执行 ngaftercontentchecked 生命周期钩子。它与 ngaftercontentinit 类似,但在每个更改检测周期后运行。

示例:

import { component, aftercontentchecked } from '@angular/core';

@component({
  selector: 'app-sample',
  template: ``
})
export class samplecomponent implements aftercontentchecked {
  ngaftercontentchecked(): void {
    console.log('projected content checked');
  }
}

6.ngafterviewinit

用途:在第一个 ngaftercontentchecked 之后调用一次。

此生命周期挂钩用于在组件的视图(以及任何子视图)初始化后执行操作。它通常用于在 angular 渲染视图的子视图后操作或读取它们的属性。

示例:

import { component, afterviewinit, viewchild, elementref } from '@angular/core';

@component({
  selector: 'app-sample',
  template: `

hello, world!

` }) export class samplecomponent implements afterviewinit { @viewchild('textelement') textelement: elementref; ngafterviewinit(): void { console.log('view initialized:', this.textelement.nativeelement.textcontent); } }

7.ngafterviewchecked

用途:每次检查组件视图后调用。

这个钩子在 angular 检查组件视图的更新后被调用。它与 ngafterviewinit 类似,但在每个更改检测周期后运行。这可用于应用依赖于视图中更新的逻辑。

示例:

import { component, afterviewchecked } from '@angular/core';

@component({
  selector: 'app-sample',
  template: `

hello, angular!

` }) export class samplecomponent implements afterviewchecked { ngafterviewchecked(): void { console.log('view checked'); } }

8.ngondestroy

用途:在 angular 销毁组件之前调用。

ngondestroy 钩子是执行清理任务的地方,例如取消订阅可观察对象、分离事件处理程序或释放可能导致内存泄漏的资源。

示例:

import { Component, OnDestroy } from '@angular/core';

@Component({
  selector: 'app-sample',
  template: `

Component loaded

` }) export class SampleComponent implements OnDestroy { ngOnDestroy(): void { console.log('Component is about to be destroyed'); } }

结论

有效地理解和使用这些生命周期挂钩可以让您对 angular 应用程序进行细粒度的控制。从 ngoninit 中初始化数据到 ngondestroy 中清理资源,生命周期钩子提供了动态应用程序所需的基本控制。

在下一篇文章中,我们将深入探讨这些钩子如何在现实世界的 angular 应用程序中协同工作,展示更复杂的生命周期和交互的示例。

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

383

2023.08.14

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

257

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

384

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

914

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1591

2024.08.16

ip地址修改教程大全
ip地址修改教程大全

本专题整合了ip地址修改教程大全,阅读下面的文章自行寻找合适的解决教程。

86

2025.12.26

压缩文件加密教程汇总
压缩文件加密教程汇总

本专题整合了压缩文件加密教程,阅读专题下面的文章了解更多详细教程。

50

2025.12.26

wifi无ip分配
wifi无ip分配

本专题整合了wifi无ip分配相关教程,阅读专题下面的文章了解更多详细教程。

102

2025.12.26

漫蛙漫画入口网址
漫蛙漫画入口网址

本专题整合了漫蛙入口网址大全,阅读下面的文章领取更多入口。

297

2025.12.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
TypeScript 教程
TypeScript 教程

共19课时 | 1.8万人学习

TypeScript——十天技能课堂
TypeScript——十天技能课堂

共21课时 | 1万人学习

TypeScript-45分钟入门
TypeScript-45分钟入门

共6课时 | 0.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号