Angular 角镖:将事件传递给另一个组合
我有两个组件A和组件B。他们都是兄弟姐妹,都是母亲的孩子 单击componentA时,单击事件将由event handlerA触发和处理如何将此事件传递给组件B并由事件处理程序B处理?Angular 角镖:将事件传递给另一个组合,angular,dart,angular-dart,Angular,Dart,Angular Dart,我有两个组件A和组件B。他们都是兄弟姐妹,都是母亲的孩子 单击componentA时,单击事件将由event handlerA触发和处理如何将此事件传递给组件B并由事件处理程序B处理? 欢迎任何评论。一些代码是受欢迎的。谢谢冒着听起来有点粗略的风险,你必须通过你的母亲。兄弟姐妹之间不能直接交谈 如果我理解正确,您的mother.component.html看起来有点像: <comp-a (your-event)="handleEvent()"></comp-a> <
欢迎任何评论。一些代码是受欢迎的。谢谢冒着听起来有点粗略的风险,你必须通过你的母亲。兄弟姐妹之间不能直接交谈 如果我理解正确,您的mother.component.html看起来有点像:
<comp-a (your-event)="handleEvent()"></comp-a>
<comp-b></comp-b>
这对于这个相对简单的场景来说很好。如果你必须上多个层,然后总是下多个层,这个解决方案很快就会变得令人厌烦。使用某种可观察的属性创建可注入服务可能会变得更合适
p、 我对Dart不太熟练,所以希望打字稿的例子对你有意义。冒着听起来有点粗略的风险,你必须通过你的母亲。兄弟姐妹之间不能直接交谈
如果我理解正确,您的mother.component.html看起来有点像:
<comp-a (your-event)="handleEvent()"></comp-a>
<comp-b></comp-b>
这对于这个相对简单的场景来说很好。如果你必须上多个层,然后总是下多个层,这个解决方案很快就会变得令人厌烦。使用某种可观察的属性创建可注入服务可能会变得更合适
p、 我对Dart不太熟练,所以希望TypeScript示例对您有意义。使用EventEmitter
将事件发送到主组件。。
请参阅:使用EventEmitter
将事件发送到motherComponent
。。
请参阅:通过父级传递事件是最佳做法,但还有另一种方法。您可以使用var ref来耦合组件
<compA #a ></compA><compB [clickStream]="a.click"></compB>
class CompA {
StreamController _onClick = new StreamController();
@Output()
Stream click = _onClick.stream;
}
class CompB {
@Input()
set clickStream(Stream stream) {
stream.listen(() {
// Do work here on click
});
}
}
阶级比较{
StreamController _onClick=新的StreamController();
@输出()
Stream click=\u onClick.Stream;
}
康普班{
@输入()
设置clickStream(流){
听一听(){
//点击这里工作
});
}
}
同样,这不是最好的做法,但应该有效。将事件传递给父级是最好的做法,但还有另一种方法。您可以使用var ref来耦合组件
<compA #a ></compA><compB [clickStream]="a.click"></compB>
class CompA {
StreamController _onClick = new StreamController();
@Output()
Stream click = _onClick.stream;
}
class CompB {
@Input()
set clickStream(Stream stream) {
stream.listen(() {
// Do work here on click
});
}
}
阶级比较{
StreamController _onClick=新的StreamController();
@输出()
Stream click=\u onClick.Stream;
}
康普班{
@输入()
设置clickStream(流){
听一听(){
//点击这里工作
});
}
}
同样,这不是最好的做法,但应该是可行的