在angular2/4中不使用服务的两个同级组件之间的通信

在angular2/4中不使用服务的两个同级组件之间的通信,angular,Angular,我在一个根组件中有一个两个同级组件,比如app event和app object,在app object组件中有一个对象数组,现在我想在app event同级组件中传递这个对象数组,我如何以非常简单的方式在angual2/4中传递呢 <div class="jumbotron"> <div class="container"> <div class="col-sm-8 col-sm-offset-2"> <app-ob

我在一个根组件中有一个两个同级组件,比如app event和app object,在app object组件中有一个对象数组,现在我想在app event同级组件中传递这个对象数组,我如何以非常简单的方式在angual2/4中传递呢

 <div class="jumbotron">
     <div class="container">
    <div class="col-sm-8 col-sm-offset-2">
        <app-object></app-object>
        <app-event></app-event>
      </div>
  </div>
这是应用程序对象组件ts文件

    import { Component, OnInit } from '@angular/core';
    import { dataObject} from './app-object.model'

    @Component({
     selector: 'app-object',
     templateUrl: './app-object.component.html',
     styleUrls: ['./app-object.component.css']
   })

   export class AppObjectComponent implements OnInit {

 data:dataObject[]=[new dataObject('itemA',45,true), new dataObject('itemB',58,false)];

  constructor() {
  console.log(this.data);
 }

 ngOnInit() {
 }

 }
现在,应用程序事件组件ts文件代码,我想在其中获取应用程序对象文件的数据(对象的数据变量数组)


要使其起作用,请使用
@ViewChild

<div class="jumbotron">
     <div class="container">
    <div class="col-sm-8 col-sm-offset-2">
        <app-object></app-object>
        <app-event></app-event>
      </div>
  </div>
将变量声明为public,以便可以从这里访问它

在AppObject组件中

arrayVariable:any[];
在您的AppEventComponent中

array2:any[]
父组件中的方法如下所示

someEvent(){
    this.appObjectComponent.arrayVariable = this.appEventComponent.array2 ;
}

请在您的问题中添加代码,以演示您试图实现的目标。我不知道您为什么不使用服务,但另一种选择是查看它们的公共父组件。因此,每个兄弟姐妹都会发送包含感兴趣的变量的事件(通过@Output()params),然后这些事件作为@Input()params绑定到另一个兄弟姐妹。冈特,这当然会起作用,但作为一个附带问题,让一个兄弟姐妹依赖另一个兄弟姐妹是否是一种好做法?在每个兄弟姐妹上都有一致的通用接口,然后通过父级以特定上下文/父级所需的任何逻辑方式将这些接口绑定在一起,这难道不是更有意义吗?(参考我对最初问题的评论)。tnxhey,您能解释一下您作为解决方案在上面所做的工作吗?因为我已经实现了您提到的,但在控制台中没有定义。
@Input()
s尚未在构造函数中设置。您需要将
console.log()
移动到
ngOnInit(){…}
。我想用我的方法你不会有任何依赖
#obj
只是一个参考变量,
@Input()
只是说组件依赖于数据,它可以来自任何地方。因此,组件代码中没有任何紧密耦合;应用程序内事件组件并尝试在其构造函数方法中登录该数据…有未定义的…,在这里的示例中,我的目的是使用ngFor应用程序内事件组件元素迭代数据对象并在其中显示,因此是否可以使用您的方法?我对angular2不熟悉,现在正在练习。此外,现在我使用了数据(obj数组)直接在ngFor inside app event div中…工作正常,感谢您的回答。
<div class="jumbotron">
     <div class="container">
    <div class="col-sm-8 col-sm-offset-2">
        <app-object></app-object>
        <app-event></app-event>
      </div>
  </div>
@ViewChild(AppObjectComponent) appObjectComponent : AppObjectComponent;
@ViewChild(AppEventComponent) appEventComponent : AppEventComponent;
arrayVariable:any[];
array2:any[]
someEvent(){
    this.appObjectComponent.arrayVariable = this.appEventComponent.array2 ;
}