加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在兄弟组件Angular 2之间进行通信

发布时间:2020-12-17 07:59:58 所属栏目:安全 来源:网络整理
导读:我试着按照这个答案,但它太混乱了 Angular 2 event catching between sibling components 当在子组件2上单击某些内容时,我想调用子组件1中的方法 子组件2发出一个名为trackClick的事件. 父组件: div audio-player/audio-player audio-albums/audio-albums/d
我试着按照这个答案,但它太混乱了 Angular 2 event catching between sibling components

当在子组件2上单击某些内容时,我想调用子组件1中的方法

子组件2发出一个名为trackClick的事件.

父组件:

<div>

    <audio-player></audio-player>

    <audio-albums></audio-albums>

</div>

子组件1(音频播放器)

// Don't know what to do here,want to call this function

trackChanged(track){
    console.log("YES!! " + track);
}

儿童组件2(音频专辑)

<li class="track" (click)="playTrack(track)"> </li>

@Output() trackClick = new EventEmitter<any>();

playTrack(track):void{
    console.log("calling playTrack from child 2:" + track);  
    this.trackClick.next([track]);
}
你不能这样做.首先,您必须使用@ViewChild(Child2)在父级中获取child2(按组件选择ViewChild非常重要,而不是按字符串).然后你必须在父级中捕获事件并在child2上执行你想要的任何方法.或多或少这样的事情:
import { AudioAlbumsComponent }  from '...';
import { AudioPlayerComponent }  from '...';

@Component({ 
  template: `
    <div>
      <audio-player></audio-player>
      <audio-albums (trackClick)="onTrackClicked($event)"></audio-albums>
    </div>`,directives: [AudioPlayerComponent,AudioAlbumsComponent],}) 

export class Parent {
  @ViewChild(AudioPlayerComponent) private audioPlayer: AudioPlayerComponent;

  onTrackClicked($event) {
    this.audioPlayer.trackChanged($event);
  }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读