J'obtiens cette réponse lorsque je fais une demande http en service.
Voici le composant de connexion
export class LoginComponent {
credentials: Credentials;
constructor(
private auth: AuthService,
@Inject(UserService) private userService: UserService,
@Inject(HttpClient) private http: HttpClient,
private auth0: Auth0Service
) {}
onLogin(credentials) {
const sendReq = this.userService.login(credentials);
}
J'ai ajouté UserService dans les fournisseurs de App.module
Voici le UserService
@Injectable()
export class UserService {
constructor(
@Inject(Auth0Service) private authService: Auth0Service,
protected http: HttpClient // @Inject(HttpClient) protected http: HttpClient
) {}
login(credentials): Observable<any> {
console.log(credentials);
console.log(credentials.username);
this.http
.post("http://localhost:3000/api/Users/login", {
username: credentials.username,
password: credentials.password
})
.subscribe(
data => {
console.log(data);
},
err => {
console.log("Something went wrong!");
console.log(err);
}
);
return credentials;
// this.auth.login(credentials);
}
}
Voici la console
at MergeMapSubscriber._innerSub (mergeMap.js:138)
user.service.ts:14
{username: "hamzakpt", password: "hamza"}
user.service.ts:15
hamzakpt
user.service.ts:26 Something went wrong!
user.service.ts:27
TypeError: Cannot read property 'length' of null
at HttpHeaders.applyUpdate (http.js:308)
at eval (http.js:255)
at Array.forEach (<anonymous>)
at HttpHeaders.init (http.js:255)
at HttpHeaders.forEach (http.js:354)
at Observable.eval [as _subscribe] (http.js:2153)
at Observable._trySubscribe (Observable.js:172)
at Observable.subscribe (Observable.js:160)
at subscribeToResult (subscribeToResult.js:23)
at MergeMapSubscriber._innerSub (mergeMap.js:138)
La même demande get fonctionne dans LoginComponent mais pas dans UserService. UserService est un service global tandis que Login se trouve dans un module différent.
J'ai également ajouté HTTPClientModule dans app.module et Login Module.
essayez comme ceci:
service.ts
login(credentials): Observable<any> {
return this.http.post("http://localhost:3000/api/Users/login", {
username: credentials.username,
password: credentials.password
}).map(data => data.json())
}
component.ts
onLogin(credentials) {
this.userService.login(credentials)
.subscribe(data => {
console.log('data', data);
}, (error) => {
console.log('error', error);
})
}
J'ai fait face à ce genre de problème. Le problème était dans l'en-tête, je poussais la valeur nulle, c'est-à-dire.
cloned = req.clone({
headers: req.headers.append('token', token) // token = null
})
pour résoudre ce problème, je vérifie le jeton avant de le mettre dans l'en-tête, c'est-à-dire.
if (token) {
cloned = req.clone({
headers: req.headers.append('token', token)
})
}