Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在兄弟组件Angular 2之间进行通信大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试着按照这个答案,但它太混乱了 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);
  }

}

大佬总结

以上是大佬教程为你收集整理的在兄弟组件Angular 2之间进行通信全部内容,希望文章能够帮你解决在兄弟组件Angular 2之间进行通信所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。