ありがとうございます。
これを行うにはいくつかの方法があります。
(1)(2)依存性の注入を使用しC
@Component(
selector: 'b',
directives: const [C],
template: '<c (event)="cDidEvent()"></c>',
)
class B {
final _onEvent = new StreamController();
Stream get onEvent => _onEvent.stream;
void cDidEvent() {
_onEvent.add(null);
}
}
から転送B
でイベントハンドラを作成します。
これは、コンポーネント間のより深い結合を必要とするため、すべてのデザインに適しているわけではありませんが、いくつかのシナリオでは意味があります。
abstract class OnEvent {
/// Called when an event happens.
void onEvent();
}
@Component(
selector: 'a',
directives: const [B],
template: '<b></b>',
providers: const [
const Provider(OnEvent, useExisting: A),
],
)
class A implements OnEvent {
@override
void onEvent() {
print('>>> An event was triggered!');
}
}
class C {
final OnEvent _eventHandler;
C(this._eventHandler);
void onSomeAction() {
_eventHandler.onEvent();
}
}