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

前端之家收集整理的这篇文章主要介绍了angularjs-directive – Angular 2指令现在是“可扩展的”吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对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时,旧的格言“赞成合成而非继承”是双重的.

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

猜你在找的Angularjs相关文章