Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 指令/作用域继承_Javascript_Angularjs_Angular - Fatal编程技术网

Javascript 指令/作用域继承

Javascript 指令/作用域继承,javascript,angularjs,angular,Javascript,Angularjs,Angular,也许这是一个两个问题合一的问题。我知道您必须明确声明要在Angular 2的组件中使用的指令。这是否会传播到组件的子组件,如果不是,是否可以使其成为子组件?其次,组件上声明的变量是否会传播到子组件,还是必须显式传递给组件?从beta版开始。14您必须显式列出@Component的指令数组中使用的所有指令。对于问题的第二部分,在组件上声明的变量(例如:this.name)不会传播到子组件。要实现这一点,您必须使用等属性在组件模板中显式传递它们,并且子组件必须包含@Input item属性 编辑:

也许这是一个两个问题合一的问题。我知道您必须明确声明要在Angular 2的组件中使用的指令。这是否会传播到组件的子组件,如果不是,是否可以使其成为子组件?其次,组件上声明的变量是否会传播到子组件,还是必须显式传递给组件?

从beta版开始。14您必须显式列出
@Component
指令数组中使用的所有指令。对于问题的第二部分,在组件上声明的变量(例如:
this.name
)不会传播到子组件。要实现这一点,您必须使用
等属性在组件模板中显式传递它们,并且子组件必须包含
@Input item
属性

编辑: 要结合评论中的澄清。。。可以全局注册指令,但只能在
bootstrap
函数中注册。在父组件上声明的指令将不被子组件继承

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

他们计划实施你提到的。但是,它一直被推后,所以你必须等待。我想这是一个很难解决的问题,因为模块化的思想要求组件/模块没有隐含的依赖关系。如果你将你的子组件移动到其他地方,它会崩溃。这通常通过继承或依赖项注入来解决,这会在子组件和父组件之间建立牢固的联系,从而使子组件无法自行移动。我认为这与函数式编程一样有意义……不幸的是,这意味着我还有一些工作要做;)您可以使用
provide(平台_指令,{useValue:[SomeDirective,SomeComponent],multi:true})使directves全局可用
,与管道
bootstrap(应用程序,[provide(平台_管道,{useValue:RainbowizePipe,multi:true})相同感谢您的澄清