在 Angular 模板中使用 async pipe 时,它如何自动处理 Observable 的订阅与取消?为什么推荐使用它?
围绕“在 Angular 模板中使用 async pipe 时,它如何自动处理 Observable 的订阅与取消?为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 async pipe 内部自动调用 subscribe 并在组件销毁时取消。
组件与依赖注入专题面试题第 1 页,显示第 1–27 题,共找到 27 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“在 Angular 模板中使用 async pipe 时,它如何自动处理 Observable 的订阅与取消?为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 async pipe 内部自动调用 subscribe 并在组件销毁时取消。
围绕“在 Angular 中,ChangeDetectionStrategy.OnPush 与 Default 有何根本区”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出 OnPush 仅在输入属性变化或事件触发时检查。
本文说明 Angular 模板中属性绑定和事件绑定的语法、数据流方向及生命周期触发时机,澄清单向性原则,并通过具体场景分析执行顺序与常见陷阱。
围绕“Angular 组件的视图封装模式有哪几种?它们如何影响样式的作用域传播”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Emulated、ShadowDom、None 三者的实际样式隔离行为。
围绕“在 Angular 模板中,使用 *ngIf 与 [hidden] 两种方式实现条件渲染,它们在性能和 DOM 行为”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 *ngIf 移除/插入节点,[hidden] 仅改变 display 样式。
围绕“编写一个自定义管道时,transform 方法的参数类型和返回值必须满足什么要求?它如何参与变更检测”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 transform 接收输入值数组,返回新值,且其调用受变更检测触发。
本文解释Angular服务作为DI提供者时,providers定义层级(根、组件、子组件)如何影响实例共享范围。涵盖注入器树机制、组件级providers的遮蔽行为,并通过具体场景说明如何控制服务状态隔离与共享,指出常见误区及边界条件。
围绕“当一个组件被销毁时,其依赖注入的服务实例是否一定随之销毁?这取决于什么条件”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明服务实例随提供者作用域决定,根服务不会因组件销毁而消失。
围绕“结构型指令与属性型指令在实现上有什么本质区别?分别适用于哪些典型场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分 *ngIf 与 [style.color] 的底层实现机制。
围绕“如何在运行时动态加载一个组件?这需要哪些必要条件,以及如何传递数据给该组件”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明需要 ViewContainerRef 与 ComponentFactoryResolver 两者配合。
围绕“如何在模型驱动表单中动态添加或删除表单控件?这需要修改哪些数据结构”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明需通过 FormGroup 与 FormArray 拓展动态结构。
围绕“如何在模板中根据组件状态动态绑定多个样式类?使用 [class.xxx] 与 [ngClass] 有何区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 [ngClass] 支持对象、数组形式,[class.xxx] 仅支持布尔值。
围绕“在 Angular 模板中,子组件触发的事件是否会在父组件中冒泡?如何阻止事件冒泡”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明事件默认在组件树中向上传播,可通过 $event.stopPropagation() 阻止。
本题对比模板驱动表单与模型驱动表单在数据绑定(双向绑定 vs 显式响应式绑定)、验证(模板内置 vs 代码函数)和可测试性(异步集成 vs 同步单元)上的关键差异,并给出选择场景与边界。
围绕“当一个组件的 @Input() 属性接收了空值(如 null)时,它是否会被视为有效输入?如何判断是否已赋值”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明输入值为 null 仍被视为有效输入,需通过显式比较判断。
本题解释 Angular 基于 @Input/@Output 的父子通信机制,阐明输入是单向传值且不可反向修改,输出事件由 EventEmitter 同步触发,并给出具体购物车场景及失效边界。
围绕“在 Angular 中,使用 lazy loading 模块时,其依赖的服务是否会被独立实例化?如何确认”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明每个懒加载模块拥有自己的 DI 容器,服务实例独立。
围绕“当一个组件被创建时,其生命周期钩子按什么顺序触发?若在构造函数中调用服务,可能引发什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须列出 ngOnInit 到 ngOnDestroy 的完整顺序。
围绕“当一个组件包含多个视图封装模式(如 Emulated 与 ShadowDom)时,样式冲突如何发生?如何避免”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明不同封装模式下的样式作用域不互通。
围绕“Angular 的 <ng-content> 与插槽机制如何实现内容投影?默认投影与具名投影的区别是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释 slot 与 selector 投影匹配逻辑。
围绕“在 Angular 表单或 HTTP 调用中,为何通常使用 Observable 而非 Promise?其核心优势体”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须强调 Observable 支持多值推送与取消订阅能力。
围绕“Angular 路由配置中的 data 属性用于存放什么类型的信息?它与 resolve 服务提供的数据有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 data 用于静态元数据,resolver 用于异步加载业务数据。
围绕“CanActivate 路由守卫如何决定用户是否可以进入某个路由?它返回的布尔值或 Observable 代表什么含”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明返回 true 表示允许进入,返回 false 表示阻止,返回 Observable 表示异步决策。
围绕“Angular Signals 中 computed 信号如何工作?它与 effect 信号的主要用途区别是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 computed 用于派生值,effect 用于副作用。
围绕“Angular Signals 与传统的变更检测机制相比,在响应式更新方面有何根本性差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Signals 通过原子信号追踪依赖并自动触发副作用。
围绕“Angular 的 standalone 组件与传统模块化组件有何核心差异?它们如何引入依赖”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 standalone 组件无需声明于 NgModule,而是通过 imports 显式导入依赖。
围绕“ViewChild 如何获取子组件或原生元素的引用?在什么情况下它可能返回 null”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明查询发生在视图初始化之后,且需在 ngAfterViewInit 才可靠访问。