diff --git a/packages/common/src/pipes/async_pipe.ts b/packages/common/src/pipes/async_pipe.ts index b73ec67059f..06c14ba6e40 100644 --- a/packages/common/src/pipes/async_pipe.ts +++ b/packages/common/src/pipes/async_pipe.ts @@ -86,7 +86,7 @@ export class AsyncPipe implements OnDestroy, PipeTransform { private _subscription: Unsubscribable|Promise|null = null; private _obj: Subscribable|Promise|EventEmitter|null = null; - private _strategy: SubscriptionStrategy = null!; + private _strategy: SubscriptionStrategy|null = null; constructor(private _ref: ChangeDetectorRef) {} @@ -126,7 +126,8 @@ export class AsyncPipe implements OnDestroy, PipeTransform { obj, (value: Object) => this._updateLatestValue(obj, value)); } - private _selectStrategy(obj: Subscribable|Promise|EventEmitter): any { + private _selectStrategy(obj: Subscribable|Promise| + EventEmitter): SubscriptionStrategy { if (ɵisPromise(obj)) { return _promiseStrategy; } @@ -139,7 +140,9 @@ export class AsyncPipe implements OnDestroy, PipeTransform { } private _dispose(): void { - this._strategy.dispose(this._subscription!); + // Note: `dispose` is only called if a subscription has been initialized before, indicating + // that `this._strategy` is also available. + this._strategy!.dispose(this._subscription!); this._latestValue = null; this._subscription = null; this._obj = null;