当前位置:  开发笔记 > 运维 > 正文

Angular 2指令现在是"可扩展的"吗?

如何解决《Angular2指令现在是"可扩展的"吗?》经验,为你挑选了1个好方法。

我对Angular 1的最大问题是扩展(在面向对象的意义上)指令是多么困难.

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

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

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

编辑:

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

(这些@Component类不是传统的OO类,其中包含可以分配给子代的方法.它只是一个字段和回调的容器,完全由注释背后的内容驱动.)



1> drew moore..:

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

@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但不会bar输入(或任何其他).因此,如果继承实际上是对您的用例最有意义的,那么接近它的方法是在子类注释中声明输入等,并将它们作为构造函数参数传递给父类,您可以在其中封装公共功能.

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

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

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有