不推荐使用EventEmitter,不应使用它

Cod*_*doc 6 dart angular-dart angular

在AngularDart 3.0.0中,不推荐使用EventEmitter.那么,如何将子组件中的事件发送给父组件?

在更新之前,它看起来像:

@Component(
  selector: 'my-test',
  templateUrl: 'test.component.html'
)
class TestComponent {
  @Input()
  String name = '';

  @Output()
  EventEmitter<String> onNameChange = new EventEmitter<String>();
}

...    
onNameChange.emit('New Name');
...
Run Code Online (Sandbox Code Playgroud)

现在我需要使用Stream和StreamController.有人能举个例子吗?

Gün*_*uer 7

只需使用正常 StreamController

final _onNameChangeController = new StreamController<String>.broadcast();
@Output()
Stream<String> get onNameChange => _onNameChangeController.stream;
Run Code Online (Sandbox Code Playgroud)

.broadcast是可选的.需要允许多个订户.

另见https://www.dartlang.org/articles/libraries/broadcast-streams

  • 3.0.0文档已经发布.使用StreamController/Stream代替EventEmitter也在https://webdev.dartlang.org/angular/guide/template-syntax#custom-events下的文档中说明 (2认同)