@ -6,8 +6,9 @@ import {ObservableWrapper, Observable, EventEmitter} from '../../src/facade/asyn
|
||||
import {InvalidPipeArgumentException} from './invalid_pipe_argument_exception';
|
||||
|
||||
class ObservableStrategy {
|
||||
createSubscription(async: any, updateLatestValue: any): any {
|
||||
return ObservableWrapper.subscribe(async, updateLatestValue, e => { throw e; });
|
||||
createSubscription(async: any, updateLatestValue: any,
|
||||
onError: (v: any) => any = e => { throw e; }): any {
|
||||
return ObservableWrapper.subscribe(async, updateLatestValue, onError);
|
||||
}
|
||||
|
||||
dispose(subscription: any): void { ObservableWrapper.dispose(subscription); }
|
||||
@ -16,8 +17,9 @@ class ObservableStrategy {
|
||||
}
|
||||
|
||||
class PromiseStrategy {
|
||||
createSubscription(async: Promise<any>, updateLatestValue: (v: any) => any): any {
|
||||
return async.then(updateLatestValue);
|
||||
createSubscription(async: Promise<any>, updateLatestValue: (v: any) => any,
|
||||
onError: (v: any) => any = e => { throw e; }): any {
|
||||
return async.then(updateLatestValue, onError);
|
||||
}
|
||||
|
||||
dispose(subscription: any): void {}
|
||||
@ -70,10 +72,10 @@ export class AsyncPipe implements OnDestroy {
|
||||
}
|
||||
}
|
||||
|
||||
transform(obj: Observable<any>| Promise<any>| EventEmitter<any>): any {
|
||||
transform(obj: Observable<any>| Promise<any>| EventEmitter<any>, onError?: (v: any) => any): any {
|
||||
if (isBlank(this._obj)) {
|
||||
if (isPresent(obj)) {
|
||||
this._subscribe(obj);
|
||||
this._subscribe(obj, onError);
|
||||
}
|
||||
this._latestReturnedValue = this._latestValue;
|
||||
return this._latestValue;
|
||||
@ -81,7 +83,7 @@ export class AsyncPipe implements OnDestroy {
|
||||
|
||||
if (obj !== this._obj) {
|
||||
this._dispose();
|
||||
return this.transform(obj);
|
||||
return this.transform(obj, onError);
|
||||
}
|
||||
|
||||
if (this._latestValue === this._latestReturnedValue) {
|
||||
@ -93,11 +95,11 @@ export class AsyncPipe implements OnDestroy {
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
_subscribe(obj: Observable<any>| Promise<any>| EventEmitter<any>): void {
|
||||
_subscribe(obj: Observable<any>| Promise<any>| EventEmitter<any>, onError?: any): void {
|
||||
this._obj = obj;
|
||||
this._strategy = this._selectStrategy(obj);
|
||||
this._subscription = this._strategy.createSubscription(
|
||||
obj, (value: Object) => this._updateLatestValue(obj, value));
|
||||
obj, (value: Object) => this._updateLatestValue(obj, value), onError);
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
|
Reference in New Issue
Block a user