加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs-directive – Angular 2指令现在是“可扩展的”吗?

发布时间:2020-12-17 17:39:10 所属栏目:安全 来源:网络整理
导读:我对Angular 1的最大问题是扩展(在面向对象的意义上)指令是多么困难. 例如,几乎不可能在我的自定义小部件上重用输入[number]指令,我不得不重新实现所有验证和类型转换代码. Angular 2组件实现为类,因此它们似乎可以轻松扩展.但是,他们也有@Component注释和非
我对Angular 1的最大问题是扩展(在面向对象的意义上)指令是多么困难.

例如,几乎不可能在我的自定义小部件上重用输入[number]指令,我不得不重新实现所有验证和类型转换代码.

Angular 2组件实现为类,因此它们似乎可以轻松扩展.但是,他们也有@Component注释和非常具体的选择器等,这使我不清楚是否可以完全覆盖它们.

那么Angular 2指令实际上是可扩展的吗?

编辑:

好的,“可扩展”不一定是扩展类.它可以创建一个由多个现有指令组成的新指令.我对这种方法的问题是应用子指令的机制是什么?

(@Component类不是传统的OO类,它们具有可以分配给子节点的方法.它只是一个字段和回调的容器,完全由注释背后的内容驱动.)

解决方法

注释不是继承的,所以如果你有:

@Directive({
    selector:'foo',inputs:['bar']
})
export class Foo  {}


//no annotation
export class FooBar extends Foo {} //not a directive


@Directive({  
   selector:'foobaz' 
}) 
export class FooBaz extends Foo {} //is a directive,but has no inputs

FooBar根本不会被认可为指令,而FooBaz会这样,但它不会是条形输入(或任何其他).因此,如果继承实际上是对您的用例最有意义的,那么接近它的方法是在子类注释中声明输入等,并将它们作为构造函数参数传递给父类,您可以在其中封装公共功能.

也就是说,我认为可扩展性并不一定意味着继承,而且根据我的经验,当涉及到DI时,旧的格言“赞成合成而非继承”是双重的.

最近比我更聪明的人说,“继承会在睡梦中谋杀你的孩子”,我倾向于自己坚持这个观点,除非我确定它是我的用例的正确工具.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读