2015-10-15 123 views
8

也许这是两个问题之一。我知道你必须显式地声明要在Component for Angular 2中使用的指令。这是否会传播给组件的子组件,如果不是,它可以做到吗?其次,组件上声明的变量是否传播给子组件,还是必须显式传递给组件?指令/范围继承

+1

他们计划实施你提到的内容。 [见这个问题](https://github.com/angular/angular/issues/2844)。然而,它不断推迟,所以你必须等待。 –

+0

我想这是一个难以解决的问题,因为模块化思想指出组件/模块没有隐式依赖关系。如果要将子组件移到其他地方,它将会中断。这通常通过继承或依赖注入来解决,这会在子组件和父组件之间建立强有力的联系,从而使您的子组件无法自行移动。 – jornare

+0

我认为这与函数式编程有同样的意义,然后......不幸的是,这意味着我有一些工作要做;) – djvs

回答

2

从beta.14开始,您必须明确列出@Componentdirectives阵列中所有使用的指令。对于问题的第二部分,在组件上声明的变量(例如:this.name)不会传播到子组件。要实现这一点,必须使用像<child [item]="parentItem"></child>这样的属性在组件模板中明确传递它们,并且子组件必须包含@Input item属性。

编辑: 要合并的澄清评论...有可能在bootstrap功能,但全球只有注册指令。父级声明的指令将由子组件继承NOT

bootstrap(App, [ 
    PLATFORM_DIRECTIVES, 
    provide(PLATFORM_DIRECTIVES, {useValue: [SomeDirective, SomeComponent], multi:true}) 
]); 
+0

您可以使用'provide(PLATFORM_DIRECTIVES,{useValue:[SomeDirective,SomeComponent], multi:true})',与管道相同'bootstrap(App,[提供(PLATFORM_PIPES,{useValue:RainbowizePipe,multi:true})]);' –

+0

谢谢澄清 – tomastrajan