深色模式
Angular 与 AngularJS
1. Angular 中组件之间通信的方式
展开答案与追问
资料说明: PDF 历史参考答案,保留原文供对照复习;其中旧版 API、兼容性及性能结论不代表当前推荐实践。
Props down
1.调用子组件,通过自定义属性传值
2.子组件内部通过Input来接收属性的值
Events up
1.在父组件中定义一个有参数的方法
2.调用子组件时,绑定自定义事件和上一步方法
3.子组件内部通过Output和EventEmitter来触发事件并传值.
2. Angular 的核心概念及 NgModule 与 standalone 如何理解?
展开答案与追问
参考答案(校订):
原题采用早期 NgModule 风格介绍 Angular:组件、模板、绑定、指令、管道、服务、依赖注入与模块。应写为 NgModule,而不是 model。现代 Angular 还支持 standalone 组件,不能把 NgModule 说成所有新项目的必备组织方式;也不要与 AngularJS 的 module 和 scope 混淆。
3. Angular 中常见的生命周期的钩子函数?
展开答案与追问
资料说明: PDF 历史参考答案,保留原文供对照复习;其中旧版 API、兼容性及性能结论不代表当前推荐实践。
ngOnChanges:当Angular设置其接收当前和上一个对象值的数据绑定属性时响应。
ngOnInit:在第一个ngOnChange触发器之后,初始化组件/指令。这是最常用的方法,
用于从后端服务检索模板的数据。
ngDoCheck:检测并在Angular上下文发生变化时执行。
每次更改检测运行时,会被调用。
ngOnDestroy:在Angular销毁指令/组件之前消除。取消订阅可观察的对象并脱离
事件处理程序,以避免内存泄漏。
组件特定的hooks:
ngAfterContentInit:组件内容已初始化完成
ngAfterContentChecked:在Angular检查投影到其视图中的绑定的外部内容之后。
ngAfterViewInit:Angular创建组件的视图后。
ngAfterViewChecked:在Angular检查组件视图的绑定之后
4. Angular 中路由的工作原理
展开答案与追问
资料说明: PDF 历史参考答案,保留原文供对照复习;其中旧版 API、兼容性及性能结论不代表当前推荐实践。
Angular应用程序具有路由器服务的单个实例,并且每当URL改变时,相应的路由就与路
由配置数组
进行匹配。在成功匹配时,它会应用重定向,此时路由器会构建ActivatedRoute对象的
树,
同时包含路由器的当前状态。在重定向之前,路由器将通过运行保护(CanActivate)
来检查是否允许新的状态。Route Guard只是路由器运行来检查路由授权的接口方法。
保护运行后,它将解析路由数据并通过将所需的组件实例化到<router-
outlet></router-outlet>
来激活路由器状态。
5. RxJS 在 Angular 中有哪些使用场景?
展开答案与追问
参考答案(校订):
RxJS 是响应式流处理库,Observable 可表示异步数据流。Angular 常见用途包括 HttpClient 请求、表单值变化、事件流与组合取消;可以用 switchMap 避免旧请求覆盖新结果,并用 async pipe 或 takeUntilDestroyed 等机制管理订阅生命周期。RxJS 不是微软专属的网络 API。
6. AngularJS 双向绑定原理
展开答案与追问
资料说明: PDF 历史参考答案,保留原文供对照复习;其中旧版 API、兼容性及性能结论不代表当前推荐实践。
Angular将双向绑定转换为一堆watch表达式,然后递归这些表达式检查是否发生过变
化,如果变了则执行相应的watcher函数(指view上的指令,如ng-bind,ng-show
等或是{{}})。等到model中的值不再发生变化,也就不会再有watcher被触发,一
个完整的digest循环就完成了。
Angular中在view上声明的事件指令,如:ng-click、ng-change等,会将浏览器的
事件转发给$scope上相应的model的响应函数。等待相应函数改变model,紧接着触
发脏检查机制刷新view。
watch表达式:可以是一个函数、可以是$scope上的一个属性名,也可以是一个字符
串形式的表达式。$watch函数所监听的对象叫做watch表达式。watcher函数:指在
view上的指令(ngBind,ngShow、ngHide等)以及{{}}表达式,他们所注册的函数。
每一个watcher对象都包括:监听函数,上次变化的值,获取监听表达式的方法以及
监听表达式,最后还包括是否需要使用深度对比(angular.equals())