typescript - Angular 8: TypeError: Fant en ikke-anropbar @@iterator
Når jeg sender en http get-forespørsel, får jeg denne feilen TypeError: Found non-callable @@iterator, men det fungerer i Angular 7, ikke i Angular 8.
Min komponentfil
Fra component.ts-filen har jeg kalt tjenesten getCodes()
onSubmit(){
this.service.getCodes('localhost/Aggregator/getCodes').subscribe (result=>{
}, error =>{
console.log(error);
})
}
Min Interceptor-fil
Når jeg sender forespørsel, har jeg på det tidspunktet sendt disse headerne gjennom interceptor
@Injectable()
export class Interceptor implements HttpInterceptor {
sessionParam:any = {
userParam: {
'a':66,
'b':101,
'c':'0201',
'd':'Y',
'e':'Y',
'h':'2019/02/22',
'f':'Y',
'g':12
}
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let headers = new HttpHeaders();
for (var val in this.sessionParam) {
Object.keys(this.sessionParam[val]).forEach(key => {
headers = headers.append(key,this.sessionParam[val][key]);
});
}
request = request.clone({
headers: headers
})
return next.handle(request);
}
}
Min tjenestefil
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, of } from 'rxjs';
import { delay, map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class ProvidersService {
constructor(private http:HttpClient) { }
public getCodes(url, apiParam=null):Observable<any>
{
return this.http.get(url, {params: apiParam});
}
}
Jeg får følgende feil
TypeError: Found non-callable @@iterator
at HttpHeaders.applyUpdate (http.js:301)
at http.js:245
at Array.forEach (<anonymous>)
at HttpHeaders.init (http.js:241)
at HttpHeaders.forEach (http.js:339)
at Observable._subscribe (http.js:1826)
at Observable._trySubscribe (Observable.js:42)
at Observable.subscribe (Observable.js:28)
at subscribeTo.js:20
at subscribeToResult (subscribeToResult.js:7)
noen løsninger?
Svar #1
Denne feilen oppstår når du setter overskrifter med ikke-streng verdier. For å løse dette, konverter alle overskriftsverdier til streng.
Svar #2
Jeg har oppgradert fra A7 til A8 og opplevd det samme problemet.
I mitt tilfelle feilet koden på en rad hvor jeg brukte destructuring assignment:
return this.fooPipe.transform(foo, ...args);
-> Error: Found non-callable @@iterator
Det har hjulpet meg å endre tsconfig.json fra:
"target": "es2015"
til
"target": "es5"
