2016-07-14 42 views
0

我在我的应用程序中使用了常见组件,如我在其他组件中使用的标题,对话框等。他们的方式我现在就是在我需要的时候简单地将它们用作HTML标签。例如,如果我的标题组件的选择器是'app-header',那么每次我想包含标题时,我都使用<app-header></app-header>Angular2重新使用组件

我觉得这不是正确的做法,因为Angular有一个叫做ViewChild的东西,它可以做同样的事情。但是,当我尝试使用ViewChild我得到同样的错误这里讨论:https://github.com/angular/angular/issues/5415

回答

0

外貌,像你的问题是从5415的问题(你的链接)的问题完全不同..

如果你想在你的页面上总是有一些组件,只是一些替代品 - 你需要使用路由器。

https://angular.io/docs/ts/latest/guide/router.html

+0

我觉得有一个误解。想象一下,我有3个组件:HomeComponent,MapComponent,TileComponent。我希望HomeCompoent View在任何时候都包含MapComponent和TileComponent。我不认为这是路由器的用途。 – Yhlas

+1

对不起,但我不明白从你的解释问题。 如果你需要一个组件包含另一个组件,只需将它们添加到一个HomeComponent模板(和'指令'的装饰器属性),如下所示: '... <地图组分> <标题组分> ... ' 比你会把你的<家庭成分>地方它会在所有子组件中渲染..这是基于组件的方法的基本原则。 '@ ViewChild'装饰只有当你想获得一个访问子组件属性 –

+0

感谢,奥列格只有必要。我就是这样做的。我只是不确定这是否正确。 – Yhlas

0

我想你只需要添加的子组件选择模板父组件。一旦这样完成,只要使用父组件,子组件就会出现。我一直在我的角度2项目中这样做,这是有效的。如果我对你的问题的理解是正确的,请告诉我。 干杯, Abhi