fix(common): properly check NaN value (#22305)
closes #15721 PR Close #22305
This commit is contained in:
		
							parent
							
								
									c3c0df9d56
								
							
						
					
					
						commit
						3f6bf6dfd1
					
				| @ -6,7 +6,7 @@ | |||||||
|  * found in the LICENSE file at https://angular.io/license
 |  * found in the LICENSE file at https://angular.io/license
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import {ChangeDetectorRef, EventEmitter, Injectable, OnDestroy, Pipe, PipeTransform, WrappedValue, ɵisObservable, ɵisPromise} from '@angular/core'; | import {ChangeDetectorRef, EventEmitter, Injectable, OnDestroy, Pipe, PipeTransform, WrappedValue, ɵisObservable, ɵisPromise, ɵlooseIdentical} from '@angular/core'; | ||||||
| import {Observable, SubscriptionLike} from 'rxjs'; | import {Observable, SubscriptionLike} from 'rxjs'; | ||||||
| import {invalidPipeArgumentError} from './invalid_pipe_argument_error'; | import {invalidPipeArgumentError} from './invalid_pipe_argument_error'; | ||||||
| 
 | 
 | ||||||
| @ -103,7 +103,7 @@ export class AsyncPipe implements OnDestroy, PipeTransform { | |||||||
|       return this.transform(obj as any); |       return this.transform(obj as any); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (this._latestValue === this._latestReturnedValue) { |     if (ɵlooseIdentical(this._latestValue, this._latestReturnedValue)) { | ||||||
|       return this._latestReturnedValue; |       return this._latestReturnedValue; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -82,6 +82,18 @@ import {SpyChangeDetectorRef} from '../spies'; | |||||||
|                async.done(); |                async.done(); | ||||||
|              }, 10); |              }, 10); | ||||||
|            })); |            })); | ||||||
|  | 
 | ||||||
|  |         it('should return unwrapped value for unchanged NaN', () => { | ||||||
|  |           const emitter = new EventEmitter<any>(); | ||||||
|  |           emitter.emit(null); | ||||||
|  |           pipe.transform(emitter); | ||||||
|  |           emitter.next(NaN); | ||||||
|  |           const firstResult = pipe.transform(emitter); | ||||||
|  |           const secondResult = pipe.transform(emitter); | ||||||
|  |           expect(firstResult instanceof WrappedValue).toBe(true); | ||||||
|  |           expect((firstResult as WrappedValue).wrapped).toBeNaN(); | ||||||
|  |           expect(secondResult).toBeNaN(); | ||||||
|  |         }); | ||||||
|       }); |       }); | ||||||
| 
 | 
 | ||||||
|       describe('ngOnDestroy', () => { |       describe('ngOnDestroy', () => { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user