【发布时间】: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>
popupOne 和 popupTwo 都设置为 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 那么你的代码有问题。它应该可以工作。