返回顶部
首页 > 资讯 > 前端开发 > VUE >Angular不要在模板中调用方法的原因有哪些
  • 278
分享到

Angular不要在模板中调用方法的原因有哪些

2024-04-02 19:04:59 278人浏览 独家记忆
摘要

这篇文章主要介绍angular不要在模板中调用方法的原因有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在运行 ng generate component <compone

这篇文章主要介绍angular不要在模板中调用方法的原因有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

在运行 ng generate component <component-name> 命令后创建angular组件的时候,默认情况下会生成四个文件:

  • 一个组件文件 <component-name>.component.ts

  • 一个模板文件 <component-name>.component.html

  • 一个 CSS 文件, <component-name>.component.css

  • 测试文件 <component-name>.component.spec.ts

模板,就是你的HTML代码,需要避免在里面调用非事件类的方法。举个例子

<!--html 模板-->
<p>
  translate Name: {{ originName }}
</p>
<p>
  translate Name: {{ getTranslatedName('你好') }}
</p>
<button (click)="onClick()">Click Me!</button>
// 组件文件
import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
})
export class AppComponent {
  originName = '你好';

  getTranslatedName(name: string): string {
    console.log('getTranslatedName called for', name);
    return 'hello world!';
  }

  onClick() {
    console.log('Button clicked!');
  }
}

Angular不要在模板中调用方法的原因有哪些

我们在模板里面直接调用了getTranslatedName方法,很方便的显示了该方法的返回值 hello world。 看起来没什么问题,但如果我们去检查console会发现这个方法不止调用了一次。

Angular不要在模板中调用方法的原因有哪些

并且在我们点击按钮的时候,即便没想更改originName,还会继续调用这个方法。

Angular不要在模板中调用方法的原因有哪些

原因与angular的变化检测机制有关。正常来说我们希望,当一个值发生改变的时候才去重新渲染对应的模块,但angular并没有办法去检测一个函数的返回值是否发生变化,所以只能在每一次检测变化的时候去执行一次这个函数,这也是为什么点击按钮时,即便没有对originName进行更改却还是执行了getTranslatedName

当我们绑定的不是点击事件,而是其他更容易触发的事件,例如 mouseenter, mouseleave, mousemove等该函数可能会被无意义的调用成百上千次,这可能会带来不小的资源浪费而导致性能问题。

一个小Demo:

https://stackblitz.com/edit/angular-ivy-4bahvo?file=src/app/app.component.html

大多数情况下,我们总能找到替代方案,例如在onInit赋值

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
})
export class AppComponent implements OnInit {
  originName = '你好';
  TranslatedName: string;

  nGonInit(): void {
    this.TranslatedName = this.getTranslatedName(this.originName)
  }
  getTranslatedName(name: string): string {
    console.count('getTranslatedName');
    return 'hello world!';
  }

  onClick() {
    console.log('Button clicked!');
  }
}

或者使用pipe,避免文章过长,就不详述了。

以上是“Angular不要在模板中调用方法的原因有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: Angular不要在模板中调用方法的原因有哪些

本文链接: https://lsjlt.com/news/82270.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Angular不要在模板中调用方法的原因有哪些
    这篇文章主要介绍Angular不要在模板中调用方法的原因有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在运行 ng generate component <compone...
    99+
    2024-04-02
  • Angular中模板语法有哪些
    这篇文章给大家分享的是有关Angular中模板语法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。插值表达式test-interpolation.component.ts@Component({ &...
    99+
    2023-06-14
  • python中无法调用numpy的原因有哪些
    1. 未正确安装NumPy库:如果没有正确安装NumPy库,就无法在Python中调用它的功能。2. 忘记导入NumPy模块:在Py...
    99+
    2023-09-08
    python numpy
  • 不用select的原因有哪些
    这篇文章主要讲解了“不用select的原因有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“不用select的原因有哪些”吧!第一宗罪:不必要的...
    99+
    2024-04-02
  • Java模板方法的使用方式有哪些
    这篇文章主要介绍了Java模板方法的使用方式有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java模板方法的使用方式有哪些文章都会有所收获,下面我们一起来看看吧。为什么我会想到使用模板方法呢?在日常开发中...
    99+
    2023-07-05
  • java要用反射的原因有哪些
    使用反射的原因有以下几点:1. 动态加载类:通过反射可以在运行时动态加载需要使用的类,而不需要在编译时将类引入到代码中。这样可以实现...
    99+
    2023-08-09
    java
  • Vue.js中有哪些常用的模板语法
    本篇文章给大家分享的是有关Vue.js中有哪些常用的模板语法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、文本渲染Vue支持动态渲染文本,...
    99+
    2024-04-02
  • pytorch调用gpu失败的原因有哪些
    没有安装正确的GPU驱动程序或CUDA工具包。在PyTorch中使用GPU需要正确安装并配置NVIDIA GPU驱动程序和相应版...
    99+
    2024-04-02
  • win10游戏模式点不开的原因有哪些
    1. 硬件不支持:游戏模式需要一定的硬件性能支持,如果你的电脑硬件不足,可能无法启用游戏模式。2. 操作系统版本限制:游戏模式只适用...
    99+
    2023-08-30
    win10
  • css不起作用的原因有哪些
    这篇文章主要介绍css不起作用的原因有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! css不起作用的原因:1、未关联外部样式表;2、样式表保存的编码...
    99+
    2024-04-02
  • linux挂载点不存在的原因有哪些
    Linux挂载点不存在的原因有以下几种:1. 挂载点路径错误:可能是由于输入错误的挂载路径导致的。在Linux中,挂载点必须是一个已...
    99+
    2023-10-20
    linux
  • Redis中需要AOF重写的原因有哪些
    AOF文件过大:随着Redis的运行,AOF文件会不断增长,可能达到非常大的规模,导致占用大量磁盘空间。 AOF文件过期:A...
    99+
    2024-05-07
    Redis
  • smarty模板的数据变量有哪些以及调用方法是什么
    本篇内容主要讲解“smarty模板的数据变量有哪些以及调用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“smarty模板的数据变量有哪些以及调用方法是什么”吧! 定义:模板变...
    99+
    2023-06-07
  • linux中ssh连不上的原因有哪些
    在Linux中,SSH连接不上的原因有以下几种可能: SSH服务未启动:检查SSH服务是否已正确安装并启动。可以使用servic...
    99+
    2023-10-23
    linux ssh
  • linux中网络不能的原因有哪些
    网络配置错误:例如IP地址、子网掩码、网关等配置不正确,导致网络无法正常通信。 DNS解析问题:如果DNS服务器无法解析域名,也会...
    99+
    2024-04-02
  • unity运行不了的原因及解决方法有哪些
    Unity运行不了的原因有很多,下面列出一些常见的原因和解决方法:1. 硬件要求不满足:Unity对电脑的硬件要求较高,如果你的电脑...
    99+
    2023-08-20
    unity
  • 电脑安全模式进不去的原因有哪些
    电脑安全模式无法进入的原因可能有以下几个:1. 按键操作错误:在启动时按下的F8键或Shift键可能没有按到或者按错了。2. 系统故...
    99+
    2023-09-20
    电脑
  • php css不起作用的原因有哪些
    这篇文章主要介绍“php css不起作用的原因有哪些”,在日常操作中,相信很多人在php css不起作用的原因有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php css不起作用的原因有哪些”的疑惑有所...
    99+
    2023-07-05
  • WordPress 不同分类目录调用不同模板的方法
    wordpress不同分类调用不同模板文件 用wordpress做站特别是企业站的时候,多个分类的内容不同需要显示的页面也不一样,比如有些分类显示的是产品缩略图,有些显示的是公司新闻公告等,此时需要不同的分类模板,虽然w...
    99+
    2022-06-12
    不同分类目录 不同模板
  • Vue中不推荐用index做key的原因有哪些
    这篇文章主要介绍了Vue中不推荐用index做key的原因有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前端开发中,只要涉及到列表渲染,那么无论是 React 还是 V...
    99+
    2023-06-21
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作