refactor(async): refactor EventEmitter
Refactor EventEmitter and Async Facade to match ES7 Observable semantics, properly use RxJS typedefs, make EventEmitter inherit from RxJS Subject. Closes #4149. BREAKING CHANGE: - consumers of EventEmitter no longer need to call .toRx() - EventEmitter is now generic and requires a type - e.g. `EventEmitter<string>` - EventEmitter and Observable now use the `.subscribe(generatorOrNext, error, complete)` method instead of `.observer(generator)` - ObservableWrapper uses `callNext/callError/callComplete` instead of `callNext/callThrow/callReturn`
This commit is contained in:
@ -89,7 +89,7 @@ class ParentComp {
|
||||
@Directive({selector: 'custom-emitter', outputs: ['myevent']})
|
||||
@Injectable()
|
||||
class CustomEmitter {
|
||||
myevent: EventEmitter;
|
||||
myevent: EventEmitter<any>;
|
||||
|
||||
constructor() { this.myevent = new EventEmitter(); }
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ import {ObservableWrapper, EventEmitter, PromiseWrapper} from 'angular2/src/core
|
||||
|
||||
export function main() {
|
||||
describe('EventEmitter', () => {
|
||||
var emitter: EventEmitter;
|
||||
var emitter: EventEmitter<any>;
|
||||
|
||||
beforeEach(() => { emitter = new EventEmitter(); });
|
||||
|
||||
@ -34,18 +34,18 @@ export function main() {
|
||||
expect(error).toEqual("Boom");
|
||||
async.done();
|
||||
});
|
||||
ObservableWrapper.callThrow(emitter, "Boom");
|
||||
ObservableWrapper.callError(emitter, "Boom");
|
||||
}));
|
||||
|
||||
it("should work when no throw callback is provided", inject([AsyncTestCompleter], (async) => {
|
||||
ObservableWrapper.subscribe(emitter, (_) => {}, (_) => { async.done(); });
|
||||
ObservableWrapper.callThrow(emitter, "Boom");
|
||||
ObservableWrapper.callError(emitter, "Boom");
|
||||
}));
|
||||
|
||||
it("should call the return callback", inject([AsyncTestCompleter], (async) => {
|
||||
ObservableWrapper.subscribe(emitter, (_) => {}, (_) => {}, () => { async.done(); });
|
||||
|
||||
ObservableWrapper.callReturn(emitter);
|
||||
ObservableWrapper.callComplete(emitter);
|
||||
}));
|
||||
|
||||
it("should subscribe to the wrapper asynchronously", () => {
|
||||
|
@ -907,7 +907,7 @@ class WrappedValue implements ControlValueAccessor {
|
||||
|
||||
@Component({selector: "my-input", template: ''})
|
||||
class MyInput implements ControlValueAccessor {
|
||||
@Output('change') onChange: EventEmitter = new EventEmitter();
|
||||
@Output('change') onChange: EventEmitter<any> = new EventEmitter();
|
||||
value: string;
|
||||
|
||||
constructor(cd: NgControl) { cd.valueAccessor = this; }
|
||||
|
@ -133,7 +133,7 @@ export function main() {
|
||||
if (!IS_DART) {
|
||||
it("should update set errors and status before emitting an event",
|
||||
inject([AsyncTestCompleter], (async) => {
|
||||
c.valueChanges.toRx().subscribe(value => {
|
||||
c.valueChanges.subscribe(value => {
|
||||
expect(c.valid).toEqual(false);
|
||||
expect(c.errors).toEqual({"required": true});
|
||||
async.done();
|
||||
|
@ -1976,7 +1976,7 @@ class DoublePipe implements PipeTransform {
|
||||
@Injectable()
|
||||
class DirectiveEmitingEvent {
|
||||
msg: string;
|
||||
event: EventEmitter;
|
||||
event: EventEmitter<any>;
|
||||
|
||||
constructor() {
|
||||
this.msg = '';
|
||||
@ -2002,7 +2002,7 @@ class DirectiveUpdatingHostProperties {
|
||||
@Directive({selector: '[update-host-actions]', host: {'@setAttr': 'setAttribute'}})
|
||||
@Injectable()
|
||||
class DirectiveUpdatingHostActions {
|
||||
setAttr: EventEmitter;
|
||||
setAttr: EventEmitter<any>;
|
||||
|
||||
constructor() { this.setAttr = new EventEmitter(); }
|
||||
|
||||
|
Reference in New Issue
Block a user