Angular 使用ng路由时,是否在ng2中的父组件和子组件之间共享变量?

Angular 使用ng路由时,是否在ng2中的父组件和子组件之间共享变量?,angular,Angular,如果子容器是由设置的页面,那么在父容器和子容器之间共享变量的正确方法是什么 post显示了@Input()方法,但在使用时,该方法是不可能的(据我所知),因为必须在HTML元素上设置[property] 还有一种使用服务的方法,我已经尝试过了,但这似乎并不能解决我的问题,这就是:我得到了 “原始异常:表达式在检查后已更改。” 当我更改服务中的变量时,因为更改是从子组件启动的,而且显然父组件仍然不“知道”更改,即使我使用了上面S.O.帖子中描述的服务技术 然后,我尝试将ChangeDetector

如果子容器是由
设置的页面,那么在父容器和子容器之间共享变量的正确方法是什么

post显示了@Input()方法,但在使用
时,该方法是不可能的(据我所知),因为必须在HTML元素上设置[property]

还有一种使用服务的方法,我已经尝试过了,但这似乎并不能解决我的问题,这就是:我得到了

“原始异常:表达式在检查后已更改。”

当我更改服务中的变量时,因为更改是从子组件启动的,而且显然父组件仍然不“知道”更改,即使我使用了上面S.O.帖子中描述的服务技术

然后,我尝试将ChangeDetectorRef添加到父对象,并在子对象更改共享变量时对父对象执行changeDetector.detectChanges()。但是,这会创建一个无限循环,因为出于某种原因,changeDetector会调用子变量的ngOnInit()(再次!),这是一个共享变量发生更改的地方,它会从父变量启动detectChanges()调用,然后继续

我可以删除这个无限循环,但我想知道为什么父对象上的detectChanges()调用子对象的ngOnInit()

并且,在父级和子级之间共享变量的最佳实践是什么,其中子级通过ng路由放入父级页面?当然不会这么难