Events 角省道组件事件

Events 角省道组件事件,events,scope,dart,components,angular-dart,Events,Scope,Dart,Components,Angular Dart,我正在尝试将自定义事件从组件传递到其父组件/控制器 confirm.html 确认,省道 @组件( 选择器:“确认组件”, templateUrl:'confirm.html', useShadowDom:false, 出版物:“ctrl” ) 类确认组件{ 无效是(){ 打印(“是”); //火灾确认是事件 } 无效编号(){ 打印(‘否’); //火灾确认无任何事件 } } 有这样的事吗 是否要删除 我可以使用一个普通的StreamController,但是我必须用代码连接我的组件

我正在尝试将自定义事件从组件传递到其父组件/控制器

confirm.html


确认,省道

@组件(
选择器:“确认组件”,
templateUrl:'confirm.html',
useShadowDom:false,
出版物:“ctrl”
)
类确认组件{
无效是(){
打印(“是”);
//火灾确认是事件
}
无效编号(){
打印(‘否’);
//火灾确认无任何事件
}
}
有这样的事吗


是否要删除
我可以使用一个普通的StreamController,但是我必须用代码连接我的组件

confirmComponent.onConfirmYes.listen()
confirmComponent.onConfirmNo.listen()
我还发现:

这是:

在这两种踏板中都提到了scope.emit。但是我没有找到一种方法将它与组件而不是控制器一起使用。是否有完整的示例vor angular.dart v0.14.0


是否是scope.emit我正在搜索的东西?

这应该是相同的,只需向构造函数添加一个scope参数,以便组件获得注入的作用域

角度0.14.0有相关变化

我还没试过这个。 根据说明,您需要实现
ScopeAware

@组件(…)
类MyComponent实现ScopeAware{
手表;
MyComponent(依赖项myDep){
//将Scope/RootScope参数添加到ctor是一个错误,将导致DI
//循环依赖项错误-在类构造函数中永远无法访问该范围
}
无效集范围(范围){
//在这个范围内,您应该能够使用emit
//调用此setter来初始化作用域
watch=scope.rootScope.watch(“表达式”,(v,p)=>…);
}
}

根据甘特的回答,我构建了这个工作示例:

@组件(
选择器:“确认组件”,
templateUrl:'component/confirm.html',
useShadowDom:false,
出版物:“ctrl”
)
类ConfirmComponent实现ScopeAware{
范围;
无效是(){
scope.emit('confirm','yes');
}
无效编号(){
scope.emit('confirm','no');
}
}
@组成部分(
选择器:“我的组件”,
templateUrl:'component/my.html',
useShadowDom:false,
出版物:“ctrl”
)
类MyComponent实现ScopeAware{
无效集范围(范围){
Stream mystream=scope.on('confirm');
mystream.listen((事件){
打印(“已确认:”+事件数据);
});
}
}

您只需在('confirm')上编写
作用域。侦听(…)
。如果要取消订阅,应将从
listen
返回的
StreamSubscription
存储在可以调用
cancel()
取消订阅事件的位置。