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时,旧的格言“赞成合成而非继承”是双重的. 最近比我更聪明的人说,“继承会在睡梦中谋杀你的孩子”,我倾向于自己坚持这个观点,除非我确定它是我的用例的正确工具. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |