无法将类型为'HttpEvent <any>'的角形参数分配给该参数

Ananthakrishna

在我的身份验证服务中,

import { Injectable } from '@angular/core';
import { HttpClient,HttpSentEvent } from '@angular/common/http';
import { BehaviorSubject, Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { HttpHeaders } from '@angular/common/http';

import { environment } from 'src/environments/environment';
import { User } from '../_models';

@Injectable({ providedIn: 'root' })
export class AuthenticationService {
    private currentUserSubject: BehaviorSubject<User>;
    private payload:any;
    public header:any;
    public currentUser: Observable<User>;
    
 

    constructor(private http: HttpClient) {
        this.currentUserSubject = new BehaviorSubject<User>(JSON.parse(localStorage.getItem('currentUser')));
        this.currentUser = this.currentUserSubject.asObservable();
this.header= new HttpHeaders()
        .set('Access-Control-Allow-Origin', '*')
        .set("Access-Control-Allow-Headers", "Origin, X-Requested-With")
        .set('Accept', 'application/json')
          .set('content-type', 'application/json'); 
        
    }
    
    public get currentUserValue(): User {
        return this.currentUserSubject.value;
    }
    login(name: string, password: string) {
        this.payload={ "auth": {
            "identity": {
              "methods": ["password"],
              "password": {
                "user": {
                  "name": name,
                  
                  "password": password
                }
              }
            },
            
          }
        }
        
        this.header={'Content-Type': 'application/json'}
       
      return this.http.post<any>(`${environment.apiUrl}auth/tokens`,this.payload,{headers: this.header,observe: 'response' })
            .pipe(map(response  => {
              const user = response.body;
              const token = response.headers.get('x-subject-token');
              localStorage.setItem('token', token);
                // store user details and jwt token in local storage to keep user logged in between page refreshes
                localStorage.setItem('currentUser', JSON.stringify(user));
                this.currentUserSubject.next(user);
                console.log(response.headers.get('x-subject-token'));
                //console.log(token);
                return user;
            }));
    }
    logout() {
        // remove user from local storage to log user out
        localStorage.removeItem('currentUser');
        this.currentUserSubject.next(null);
    }
}


this.currentUserSubject.next(user)中;用户显示错误,因为无法将类型为“ HttpEvent”的参数分配给类型为“用户”的参数。类型“ HttpSentEvent”缺少类型“用户”的以下属性:名称,密码

这是我的模型user.ts

export class User {
    
    token?: string;
    
}

   

任何人都可以帮忙,我正在使用角度9。

内夫扎托普

设置时遇到问题HttpOptions这是一个类,其属性为HttpHeaders但是您实现的错误。

你需要改变

this.http.post(...., this.payload, this.header)

const httpHeaders = new HttpHeaders().set('Content-Type', 'application/json');
this.http.post(...., this.payload, {headers: httpHeaders})

为什么会出现此错误?

HttpOptions也有一个属性observe默认值为,body但您可以将其设置为response将其设置response为时,Angular会完全响应(带有状态码,响应头,正文等)。

我认为您因实施HttpOptions错误而破坏了它

更新

如果你想达到response headers你需要添加observe: 'response'HttpOptions喜欢

 const httpHeaders = new HttpHeaders().set('Content-Type', 'application/json');
this.http.post(...., this.payload, { headers: httpHeaders, observe: 'response' }).pipe(map(response => {
            const user = response.body;
            const token = response.headers.get('X-Subject-Token');
            // store user details and jwt token in local storage to keep user logged in between page refreshes
            localStorage.setItem('token', token);
            localStorage.setItem('currentUser', JSON.stringify(user));
            this.currentUserSubject.next(user);
            return user;
        }));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误:类型“ void”不能分配给类型“ HttpEvent <any>”

类型“Observable<void>”不能分配给类型“Observable<HttpEvent<any>>”类型“void”不能分配给类型“HttpEvent<any>”

在拦截器上获取令牌时出错-输入'Promise <void | 无法将Observable <HttpEvent <any >>>'分配为类型'Observable <HttpEvent <any >>'

将 Promise<Observable<HttpEvent<any>>> 压缩为 Observable<HttpEvent<any>>

角拦截器-类型'Observable <未知>'不能分配给类型'Observable <HttpEvent <any >>'

Rxjs 错误类型 'Observable<HttpEvent<any>>'

“any[]”类型的参数不能分配给“string”类型的参数

使用(event:HttpEvent <any>)参数的角度文件上传单元测试无法覆盖完整代码

返回明确响应的spyOn函数会引发错误不能将类型为“ Response <any>”的参数分配给类型为“ Response”的参数

const 断言似乎无法将类型分配给泛型参数的类型 any[]

类型“ any”的参数不能分配给“ never”类型

类型'MonoTypeOperatorFunction <any>'的参数不能分配给类型'UnaryFunction <Observable <any>,Observable <any >>'的参数

无法在Visual Studio中将类型为'string'的参数分配给类型为'number'的参数

类型'Observable <HttpEvent <any >>'不存在属性'catchError'

打字稿错误“无法将类型参数分配给类型参数”

使用Jest无法将类型“ openURL”的参数分配给类型“从不”的参数

无法将类型“未知”的参数分配给类型“字符串”的参数

无法将类型'MemoizedSelector <ICommonAppState,IMenuItemsObject []>'的参数分配给类型'string'的参数

修复TS2345:无法将类型“ HTMLElement”的参数分配给类型“ HTMLInputElement”的参数

无法将类型“ ApolloServer”的参数分配给类型“ ApolloServerBase”的参数

无法将类型“未知”的参数分配给类型“ {}”的参数

如何解决诸如 void' 之类的错误无法分配给类型为 '(value: [Post, any, {}[]]) => void' 的参数

类型'Function'的参数不能分配给类型'(... args:any [])=> void'的参数

“any”类型的参数不可分配给“never”类型的参数 - 数组已传递

ts(2345)类型'any'的参数不能分配给'never'类型的参数

Angular 6-参数类型订阅不能分配给参数类型Array <any>

类型'Element'的参数不能分配给'ReactElement <any>类型的参数

typescript:类型“ any []”的参数不能分配给类型“ []”的参数。ts(2345)

'Promise <any>'类型的参数不能分配给'string'类型的参数