Angular: NG02100: InvalidPipeArgument: '[object Object]' for pipe 'AsyncPipe'
The async pipe received a plain object or array instead of an Observable or Promise.
InvalidPipeArgument: '[object Object]' for pipe 'AsyncPipe'NG02100: InvalidPipeArgumentInvalidPipeArgument: '' for pipe 'AsyncPipe'for pipe 'AsyncPipe'InvalidPipeArgument: '[object Object],[object Object]' for pipe 'AsyncPipe' Meaning
| async subscribes to an Observable or Promise. Passing already-resolved data (an array, an object, a string) throws. Remove the pipe for plain values, or make the property an Observable / Promise. A frequent cause is | async applied to the result of a subscribe() assignment.
Common causes
- Property holds an array/object, not an Observable or Promise
- Subscribed manually in the component and then used
| asyncon the stored value - Service returns data synchronously in one branch and an Observable in another
- Wrong variable bound (the value vs the
$stream) *ngIf="user$ | async as user"whereuser$is already a value
⚡ Quick fix
- Remove
| asyncwhen the value is plain data - Or keep the Observable (
items$ = this.http.get(...)) and use| async - Use
of(value)when a stream is required
Detailed fix by platform
Angular
- Either
items = signal<Item[]>([])and@for (i of items(); track i.id), oritems$ = this.api.list();and@for (i of items$ | async; track i.id)
Code examples
Stream or value, not a mix
items$ = this.http.get<Item[]>('/api/items'); // template: @for (i of items$ | async; track i.id)
items: Item[] = []; // template: @for (i of items; track i.id) (no async)
ngOnInit() { this.items$.subscribe(v => (this.items = v)); } // fine, but then do NOT use | async on `items`How to diagnose
- Type — Observable, Promise or plain value?
- Pipe — Is async applied to the stream?
- Mix — Manual subscribe plus async?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- EmptyError RxJS: EmptyError: no elements in sequence (firstValueFrom / lastValueFrom on an empty Observable)
- exceeded maximum budget Angular build: Error: bundle initial exceeded maximum budget. Budget 1.00 MB was not met by 120.00 kB with a total of 1.12 MB
- NG02100 Angular: NG02100: InvalidPipeArgument: 'Unable to convert "x" into a date' for pipe 'DatePipe'
Most viewed in Angular
Other ways to find it
Where this error sits
Origin: On your device. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 15 Oct 2026