Angular 之装饰器@Input
Input
- 一个装饰器,用来把某个类字段标记为输入属性,并提供配置元数据。
- 该输入属性会绑定到模板中的某个 DOM 属性。当变更检测时,Angular 会自动使用这个 DOM 属性的值来更新此数据属性。
用法
- 使用原始名称作为可绑定属性名,也是默认的
// This property is bound using its original name.
@Input() bankName: string;
- 自定义一个属性值作为属性名称
@Input('account-id') id: string;
一般在组件中,不会直接使用Input标记的输入属性,可能会导致数据流问题和不必要的性能浪费。所以一般是在组件中自定义个属性来深复制Input的输入属性,从而来使用这个组件内的自定义的属性来处理数据逻辑。这样就达到了‘低耦合’的目的。
这里还有别样的一种写法取代深复制这种方法,如下:
@Input()
get isRequested(): boolean { return this._isRequested; }
set isRequested(value: boolean) {
// 当输入属性和当前的不一致时,处理一下的逻辑
if (value !== this._isRequested) {
this._isRequested = value;
}
}
private _isRequested: boolean = false;
优点
- 当输入属性和当前的不一致时,才会处理内部组件的逻辑,减少了一些不必要的性能浪费
- 使用TypeScript的get方法,可以在方法里对输入属性做进一步的数据处理,like: vue中的computed方法。
- 取代深复制的方法。
- 当需要检测某个属性的变化而做出响应的时候,不需要用生命周期的ngOnChanges方法,减少不必要的性能浪费。
Angular 之装饰器@Input的更多相关文章
- Angular 个人深究(一)【Angular中的Typescript 装饰器】
Angular 个人深究[Angular中的Typescript 装饰器] 最近进入一个新的前端项目,为了能够更好地了解Angular框架,想到要研究底层代码. 注:本人前端小白一枚,文章旨在记录自己 ...
- 【Angular专题】 (3)装饰器decorator,一块语法糖
目录 一. Decorator装饰器 二. Typescript中的装饰器 2.1 类装饰器 2.2 方法装饰器 2.3 访问器装饰器 2.4 属性装饰器 2.5 参数装饰器 三. 用ES5代码模拟装 ...
- 转发: Angular装饰器
Angular中的装饰器是一个函数,它将元数据添加到类.类成员(属性.方法)和函数参数. 用法:要想应用装饰器,把它放在被装饰对象的上面或左边. Angular使用自己的一套装饰器来实现应用程序各部件 ...
- Ionic3,装饰器(@Input、@ViewChild)以及使用 Events 实现数据回调中的相关用法(五)
标题栏的渐变效果 使用到的相关装饰器.Class以及相关方法:@Input.@ViewChild.Content.ionViewDidLoad ① @Input 装饰器:用来获取页面元素自定义属性值. ...
- angular装饰器
@NgModule 元数据 NgModule 是一个带有 @NgModule() 装饰器的类.@NgModule() 装饰器是一个函数,它接受一个元数据对象,该对象的属性用来描述这个模块.其中最重要的 ...
- python 函数之装饰器,迭代器,生成器
装饰器 了解一点:写代码要遵循开发封闭原则,虽然这个原则是面向对象开发,但也适用于函数式编程,简单的来说,就是已经实现的功能代码不允许被修改但 可以被扩展即: 封闭:已实现功能的代码块 开发:对扩张开 ...
- Python之路第一课Day4--随堂笔记(迭代生成装饰器)
上节回顾: 1.集合 a.关系测试 b.去重 2.文件操作及编码 3.函数 4.局部变量和全局变量 上节回顾 本节课内容: 1.迭代器生成器 2.装饰器 3.json pickle数据序列化 4.软件 ...
- python基础-装饰器
一.什么是装饰器 装饰器本质就是函数,功能是为其他函数附加功能 二.装饰器遵循的原则 1.不修改被修饰函数的源代码 2.不修改被修饰函数的调用方式 三.实现装饰器的知识储备 装饰器=高阶函数+函数嵌套 ...
- simple_tag,filte,分页以及cookie和装饰器
自定义simple_tag 内置的方法 首先Django中包含了很多内置的方法: 这里通过lower实现 在views视图函数中写如下代码: def tp3(request): name= " ...
随机推荐
- 置Hugo的代码高亮
+++ date="2020-10-17" title="设置Hugo的代码高亮" tags=["hugo"] categories=[&q ...
- 2020年sublime text3可用的注册码
2020年sublime text3可用的注册码 最近终于找到可以用的sublime text3注册码了,仅供各位同学交流学习使用.用完请删除,购买正版! ----- BEGIN LICENSE -- ...
- PHP 超级全局变量 $_GET
https://www.php.cn/php/php-superglobals.html https://m.php.cn/code/11853.html
- linux(centos8):centos8.1安装(详细过程/图解)(vmware fusion/CentOS-8.1.1911-x86_64)
一,centos是什么? CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一, 它是来自于Red Hat En ...
- c++数组的替代品
- Hugo+Github 搭建个人博客(Windows环境下)
目录 Hugo+Github 搭建个人博客(Windows环境下) 1.前言 2.Differences 2.1 https vs SSH 2.2 新建的github的仓库名必须为 用户名+githu ...
- 服务器免密码登录 deployer
在本地(或者开发机)执行部署任务时我们不想每次输入密码,所以我们需要将 deployer 用户设置 SSH 免密码登录: 在本机生成 deployer 专用密钥,然后拷贝公钥: $ ssh-keyge ...
- Udacity的C++编程练习: Python转C++
练习 1 在机器人定位的课程中,Sebastian Thrun 已经带领你了解了一维机器人传感和运动的 Python 代码.最后你得到了一个 sense() 函数,它基于传感器的测量数据来更新概率.你 ...
- CodeForces 1344D Résumé Review
题意 给定一个长度为 \(n\) 的序列 \(a\) 和一个整数 \(k\),构造一个序列 \(b\) 使得满足以下条件: \(0\leq b_i\leq a_i\) \(\sum\limits_{i ...
- Luogu P5072 [Ynoi2015]盼君勿忘
题意 给定一个长度为 \(n\) 的序列 \(a\) 和 \(m\) 次询问,第 \(i\) 次询问需要求出 \([l_i,r_i]\) 内所有子序列去重之后的和,对 \(p_i\) 取模. \(\t ...