Angular 2/4 click event in child show component in parent
Angular 2/4 click event in child show component in parent
我真的很难让它工作,并且花了很多时间在看似简单的实现上。
我有一个带有两个子组件的父(引用结果)组件:
<quote-table></quote-table>
<call-back-pop-up *ngIf="showCallBackPopUp"></call-back-pop-up>
我在子 'quote-table' 组件中有一个带有点击事件的按钮:
<button class="button-secondary" (click)="showCallbackToggle()">Request a callback</button>
并且在这个子 'quote-form' 组件和 @Output():
中有一个点击事件函数
@Output() showCallBackPopUp;
showCallbackToggle() {
this.showCallBackPopUp = true;
}
我在父(引用结果)组件中也有一个@Input():
@Input() showCallBack: boolean;
我希望call-back-pop-up组件显示在'quote-table'
中触发的点击事件上
我曾尝试使用布尔值和发射器切换@Input 和@Output,但没有成功。
我哪里做错了,我怎样才能让它发挥作用?
您的 child 组件需要发出它的输出事件并且 parent 需要绑定到它。
这是 child 发出事件的方式:
@Output() showCallBackPopUp = new EventEmitter();
showCallbackToggle() {
this.showCallBackPopUp.emit(true);
}
输出始终是事件发射器,它们通过发射方法发射值。
然后 parent 像这样在模板中绑定到它:
<quote-table (showCallBackPopUp)="showCallBackPopUp = true"></quote-table>
然后你就完成了。 () 语法是标准的 Angular 事件绑定语法,就像您绑定到按钮作为正常 HTML5 api 的一部分发出的单击事件一样。如果你没有给@Output() 参数,那么事件名称将是变量名称(在本例中为 "showCallBackPopUp"),但你也可以做一些像 @Output('customEventName') 这样的事情,这会改变事件名称为您输入的任何字符串。因此您的绑定将改为 (customEventName)="...do whatever.."
您还可以使用模板中的 $event 关键字获取发出的值,例如:
<quote-table (showCallBackPopUp)="showCallBackPopUp = $event"></quote-table>
如果您希望 child 能够发出 true 或 false 并让您的 parent 做出相应反应。
我真的很难让它工作,并且花了很多时间在看似简单的实现上。
我有一个带有两个子组件的父(引用结果)组件:
<quote-table></quote-table>
<call-back-pop-up *ngIf="showCallBackPopUp"></call-back-pop-up>
我在子 'quote-table' 组件中有一个带有点击事件的按钮:
<button class="button-secondary" (click)="showCallbackToggle()">Request a callback</button>
并且在这个子 'quote-form' 组件和 @Output():
中有一个点击事件函数@Output() showCallBackPopUp;
showCallbackToggle() {
this.showCallBackPopUp = true;
}
我在父(引用结果)组件中也有一个@Input():
@Input() showCallBack: boolean;
我希望call-back-pop-up组件显示在'quote-table'
中触发的点击事件上我曾尝试使用布尔值和发射器切换@Input 和@Output,但没有成功。
我哪里做错了,我怎样才能让它发挥作用?
您的 child 组件需要发出它的输出事件并且 parent 需要绑定到它。
这是 child 发出事件的方式:
@Output() showCallBackPopUp = new EventEmitter();
showCallbackToggle() {
this.showCallBackPopUp.emit(true);
}
输出始终是事件发射器,它们通过发射方法发射值。
然后 parent 像这样在模板中绑定到它:
<quote-table (showCallBackPopUp)="showCallBackPopUp = true"></quote-table>
然后你就完成了。 () 语法是标准的 Angular 事件绑定语法,就像您绑定到按钮作为正常 HTML5 api 的一部分发出的单击事件一样。如果你没有给@Output() 参数,那么事件名称将是变量名称(在本例中为 "showCallBackPopUp"),但你也可以做一些像 @Output('customEventName') 这样的事情,这会改变事件名称为您输入的任何字符串。因此您的绑定将改为 (customEventName)="...do whatever.."
您还可以使用模板中的 $event 关键字获取发出的值,例如:
<quote-table (showCallBackPopUp)="showCallBackPopUp = $event"></quote-table>
如果您希望 child 能够发出 true 或 false 并让您的 parent 做出相应反应。