【问题标题】:Communication between sibling components Angular2兄弟组件Angular2之间的通信
【发布时间】:2017-10-30 13:36:55
【问题描述】:

我什至需要在一个组件上创建一个点击,这将在其父组件内显示兄弟组件,但不知道该怎么做。我了解使用输入和输出进行父/子通信,但这不是那样工作的。

所以我有这个结构:

  • -父组件

  • -- 孩子一号

  • -- 孩子二

所以它们在我父组件的 html 中,

<app-child-one></app-child-one>
<app-child-two></app-child-two>

Child One 和 Child Two 组件都是弹出窗口,因此在父组件中单击我会显示 Child One 组件(现在弹出),并且在该弹出窗口内我有按钮 Next,它应该显示 Child Two 组件。

我不能将孩子二嵌套在孩子一中,因为有更多弹出窗口,我想保持它有条理。

这是我的代码:

父组件:

<app-one *ngIf="popupOne" [(popupOne)]="popupOne"></app-one>
<app-two *ngIf="popupTwo" [(popupTwo)]="popupTwo"></app-two>

popupOnepopupTwo 都设置为 false。

组件一:

Input() popupOne: boolean; 
Input() popupTwo: boolean; 
Output() popupOneChange= new EventEmitter<boolean>(); 
Output() popupTwoChange= new EventEmitter<boolean>(); 
close() { this.popupOne.emit(false); } 
openPopupTwo() { this.popupTwoChange.emit(true); } 

组件二:

Input() popupTwo: boolean; 

【问题讨论】:

  • “我理解使用输入和输出的父/子通信,但这不是那样工作的” - 为什么不呢?第一个孩子对父母说他已经完成了;然后父母将切换到第二个孩子。
  • @CosminAbabei 我试过了,在父项中我将变量设置为 false,将其输入到子 1 并输出更改,将其输入到子 2 = 不工作
  • @grabnem 那么你的代码有问题。它应该可以工作。

标签: angular angular2-template


【解决方案1】:

appOne 没有将popupTwo 变量注册为输出。

添加它,如&lt;app-one *ngIf="popupOne" [(popupOne)]="popupOne" [popupTwo]="popupTwo"&gt;&lt;/app-one&gt;,应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2017-05-04
    • 2016-07-08
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    相关资源
    最近更新 更多