我买了一个Angular 4模板主要是为了看看布局是如何完成的但是包含工作组件,我注意到他们在app组件中有一堆设置,主要用于菜单,改变样式,主要是控制外部框架。
在菜单组件和其他一些组件中,他们使用以下内容与AppComponent设置进行通信:
constructor(@Inject(forwardRef(() => AppComponent)) public app:AppComponent) {}
并在菜单组件中调用类似:this.app.darkMenu = true的内容
这个有效的设计,好的,坏的,过时的?我甚至不知道你可以像这样与App或父组件通信?这应该是一个Observable Subject或EventEmitter,还是可以通过forwardRef进行通信?这似乎与.NET类似,我可以使用this.master.whateverproperty与MasterPage进行通信。
我喜欢forwardRef的工作原理,但不确定我是应该使用它还是改变它来进行不同的沟通?
答案 0 :(得分:5)
forwardRef
不适合沟通。 forwardRef
将能够使用仅在同一文件中进一步声明的类型名称
如果export class AppComponent {}
位于其他文件中,则无需forwardRef
恕我直言,通常最好使用共享服务进行非直接父子组件之间的通信。