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 }
复制代码

 

 

 



posted @   Asp1rant  阅读(88)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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工具
点击右上角即可分享
微信分享提示