Angular 学习笔记 (三) - LifeCycle和ViewEncapsulation
一. 组件的LifeCycle
ngOnChanges |
绑定输入属性更改后调用
|
ngOnInit |
组件初始化后调用
|
ngDoCheck |
在每次更改检测运行期间调用
|
ngAfterContentInit |
在将内容(ng-content)投影到视图中之后调用
|
ngAfterContentChecked |
每次检查投影内容时调用
|
ngAfterViewInit |
在组件的视图(和子视图)初始化后调用
|
ngAfterViewChecked |
每次检查视图(和子视图)时调用
|
ngOnDestroy |
组件即将销毁时调用
|
二. ViewEncapsulation
@ViewEncapsulation
定义可用于Component的Component的模板和样式封装选项。
Emulated (0) : 通过向主机元素添加包含替代ID的属性,并对通过styles或styleUrls提供的样式规则进行预处理,然后将新的Host Element属性添加到所有选择器,来模拟样式的本机作用域。
None(2): 不提供ViewEncapsulation
ShadowDom (3) : 使用Shadow DOM封装样式。对于DOM,这意味着使用现代的Shadow DOM并为组件的Host元素创建ShadowRoot。
三. ViewChild
@ViewChild (from angular 8)
用于配置视图查询的属性装饰器。变更检测器在视图DOM中查找与选择器匹配的第一个元素或指令。如果视图DOM更改,并且有一个新的子项与选择器匹配,则该属性将更新。
Example:
1 import {Component, Directive, Input, ViewChild} from '@angular/core'; 2 3 @Directive({selector: 'pane'}) 4 export class Pane { 5 @Input() id!: string; 6 } 7 8 @Component({ 9 selector: 'example-app', 10 template: ` 11 <pane id="1" *ngIf="shouldShow"></pane> 12 <pane id="2" *ngIf="!shouldShow"></pane> 13 14 <button (click)="toggle()">Toggle</button> 15 16 <div>Selected: {{selectedPane}}</div> 17 `, 18 }) 19 export class ViewChildComp { 20 @ViewChild(Pane) 21 set pane(v: Pane) { 22 setTimeout(() => { 23 this.selectedPane = v.id; 24 }, 0); 25 } 26 selectedPane: string = ''; 27 shouldShow = true; 28 toggle() { 29 this.shouldShow = !this.shouldShow; 30 } 31 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具