Angular 7类中代码`_ = _;`的作用是什么?
Angular组件中
_ = _;代码的作用解析 嘿,这个写法其实是为了解决Angular模板访问全局变量的限制,尤其是当你项目里用到Lodash(那个常用的JS工具库,全局变量就是_)的时候!
为什么要写这句?
Angular的模板文件(比如你的some.component.html)有个规则:它只能直接访问当前组件类中定义的属性和方法,没办法直接调用全局作用域里的变量。如果你的模板里需要用Lodash的方法(比如_.find()、_.groupBy()这类),直接写的话Angular会报错说_ is not defined。
所以_ = _;这句的核心作用就是:
- 把全局环境中的
_(也就是Lodash的实例)赋值给组件类自己的_属性 - 这样模板就能通过组件的
_属性,顺利调用Lodash的各种工具方法了
举个实际场景
比如你想在模板里过滤数据:
<ul> <li *ngFor="let user of _.filter(users, { status: 'active' })"> {{ user.username }} </li> </ul>
要是组件类里没加_ = _;,Angular根本认不出模板里的_;加上之后,模板就能通过组件类的_属性找到全局的Lodash啦。
额外小贴士
不过现在更推荐的做法是模块化导入Lodash,比如在组件里写:
import * as _ from 'lodash';
这样就不用依赖全局变量,代码也更清晰,符合Angular的模块化设计。但这种_ = _;的写法在一些老项目里还是挺常见的,算是一种快速适配的小技巧~
内容的提问来源于stack exchange,提问作者SkyWalker
相关产品推荐
相关产品推荐

