


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Angular中为什么不要在模板中调用方法在运行nggeneratecomponentcomponent-name命令后创建angular组件的时候,默认情况下会生成四个文件:
一个组件文件component-name.component.ts
一个模板文件component-name.component.html
一个CSS文件,component-name.component.css
测试文件component-name.component.spec.ts
模板,就是你的HTML代码,需要避免在里面调用非事件类的方法。举个例子
!--html模板--
translateName:{{originName}}
translateName:{{getTranslatedName(你好)}}
button(click)=onClick()ClickMe!/button
//组件文件
import{Component}from@angular/core
@Component({
selector:my-app,
templateUrl:./ponent.html,
styleUrls:[./ponent.css],
exportclassAppComponent{
originName=你好
getTranslatedName(name:string):string{
console.log(getTranslatedNamecalledfor,name);
returnhelloworld!
onClick(){
console.log(Buttonclicked!
}
我们在模板里面直接调用了getTranslatedName方法,很方便的显示了该方法的返回值helloworld。看起来没什么问题,但如果我们去检查console会发现这个方法不止调用了一次。
并且在我们点击按钮的时候,即便没想更改originName,还会继续调用这个方法。
原因与angular的变化检测机制有关。正常来说我们希望,当一个值发生改变的时候才去重新渲染对应的模块,但angular并没有办法去检测一个函数的返回值是否发生变化,所以只能在每一次检测变化的时候去执行一次这个函数,这也是为什么点击按钮时,即便没有对originName进行更改却还是执行了getTranslatedName
当我们绑定的不是点击事件,而是其他更容易触发的事件,例如mouseenter,mouseleave,mousemove等该函数可能会被无意义的调用成百上千次,这可能会带来不小的资源浪费而导致性能问题。
一个小Demo:
/edit/angular-ivy-4bahvofile=src/app/ponent.html
大多数情况下,我们总能找到替代方案,例如在onInit赋值
import{Component,OnInit}from@angular/core
@Component({
selector:my-app,
templateUrl:./ponent.html,
styleUrls:[./ponent.css],
exportclassAppComponentimplementsOnInit{
originName=你好
TranslatedName:string;
ngOnInit():void{
this.TranslatedName=this.getTranslatedName(this.originName)
getTranslatedName(name:string):string{
console.count(getTranslatedName
retu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二手房交易资金监管及配套服务协议
- 影视动画角色形象授权及衍生品生产合作协议
- 子女海外留学经费分担与教育支持协议
- 绿色环保物流配送站运营管理委托协议
- 海外留学生医疗保险直付医院合作协议
- 智能制造工业厂房租赁及智能制造系统协议
- 拼多多品牌店铺代运营服务协议涵盖仓储物流与配送
- 市场代理区域市场调研报告补充协议
- 耕地规模化种植与现代农业合作管理协议
- 教育机构教材管理及派遣专业团队服务合同
- 2025年高考语文作文终极押题03 关于Deepseek(押题理由+作文真题++审题立意+高分范文)(全国)
- 运动素质知到课后答案智慧树章节测试答案2025年春浙江大学
- 租房合同范本下载(可直接打印)
- 福州市历史建筑保护管理办法(试行)
- JHA及SCL风险评价方法讲解(参考)
- DB11T 1933-2021 人乳库建立与运行规范
- 1.3.1动量守恒定律课件(共13张PPT)
- 国网北京市电力公司授权委托书(用电)
- 中小学教育惩戒规则(试行)全文解读ppt课件
- 常暗之厢(7规则-简体修正)
- 终端塔基础预偏值(抬高值)计算表格
评论
0/150
提交评论