4-1 什么是注解


在函数里面return了一个函数。函数本身的返回值就是函数。

装饰器并不是angular独有的 它是typeScript的特性。

做一个注解

做一个表情的注解。

让传入的字符串两边个加 一个表情符号。

在shared目录下新建目录decorators

新建index.ts

函数里面返回另外一个函数

这个函数实际上是一个匿名函数,匿名函数可以使用Es6的写法,箭头函数的形式,参数有两个一个target 一个是key

key是string类型。target实际上就是调用这个装饰器的类。

先获取目标对象的属性,然后return这个val

用setter,把传入的值两边 加上表情符号。

怎么附加在原来的对象之上呢?这个只是点是javascript上的。意思是把这个对象的key重新做一下定义。

把它的get和set用我们上面定义的getter和setter代替,然后并设置enumerable和configurable设置为true

在这里导入这个注解

页面上展示效果



我们在debug里面看一下,默认是没有配置,点击轮毂的按钮。

它会让你选择哪个debug的,这里选择Chrome

这里换成4200,因为我们前端的运行环境是4200

要求是先启动ng serve 启动前端。点击绿色按钮

这个时候会新启动一个网页

我们在前端的ts代码里设置断点

重新刷一下前端页面

断点就进来了


点击跳到下一步

再写一个注解加深印象

angular中的注解,不光可以应用于属性,还可以应用于函数
比如说在这里点击之前,我们想要它有一个确认的对话框。

这个注解有参数

参数叫做message

参数是string类型的

同样的在里面我们返回一个函数。

函数多一个入参,属性描述符,它是一个PropertyDescriptor

PropertyDescriptor也是javascripr中的概念。比如说在一个对象中
比如说下面这个类就是一个对象

对于每一个属性,它都有一个描述符。这个描述符里面会有这个属性的值,get和set

我们的装饰器,修饰的一个函数。我们要把这个函数得到。

先把原来的函数放到一个变量里面。然后我们要对它进行处理。

我们要弹出对话框,根据对话框的选择来决定是否执行这个函数。我们来定义这个函数,给他一个参数...args是any类型的。

我们首先要做的是弹出对话框的这个操作,弹出对话框里面要有信息,这里我们用的就是message,正好是我们装饰器接收的参数。

然后根据它的返回结果值来决定是否执行原有的函数。

如果返回的结果为真,那么就执行原有的函数,否则就返回null

最后在把这个descriptor返回回去。这样我们的装饰器就完事了。

然后把这个装饰器导入进来

这个时候点击一下你好,就会弹出一个窗体

点击确定

注解其实就是函数。只不过它是一个返回函数的函数。注解本身可以带参数,也可以不带参数。

在写注解的过程中用到的一些概念,这些概念可以去下面的网站去看。



 

结束

 

posted @ 2020-08-16 23:59  高山-景行  阅读(167)  评论(0编辑  收藏  举报