angular - 错误 TS2345:类型为“OperatorFunction”的参数' 不能分配给 'OperatorFunction 类型的参数
问题描述
我是 Angular 的新手。
我怎么解决这个问题?
我已经安装Angular CLI: 11.0.7
并Node: 12.18.4
错误:
错误:src/app/_services/account.service.ts:19:7 - 错误 TS2345:“OperatorFunction<User, void>”类型的参数不可分配给“OperatorFunction<Object, void>”类型的参数。“对象”类型可分配给极少数其他类型。您的意思是改用“任何”类型吗?“对象”类型缺少“用户”类型的以下属性:用户名、令牌
19 map((response: User) => { ~~~~~~~~~~~~~~~~~~~~~~~~~ 20 const user = response; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ... 24 } ~~~~~~~~~ 25 }) ~~~~~~~~
account.service.ts
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import {map} from 'rxjs/operators';
import { User } from '../_models/user';
import { ReplaySubject } from 'rxjs';
export class AccountService {
baseUrl = 'https://localhost:5001/api/';
private currentUserSource = new ReplaySubject<User>(1);
currentUser$ = this.currentUserSource.asObservable();
constructor(private http: HttpClient) { }
login(model: any) {
return this.http.post(this.baseUrl + 'account/login', model).pipe(
map((response: User) => {
const user = response;
if (user) {
localStorage.setItem('user', JSON.stringify(user));
this.currentUserSource.next(user);
}
})
)
}
}
用户.ts
export interface User{
username: string;
token: string;
}
解决方案
你需要投 http.post 返回
login(model: any) {
//-------------- here ⇊⇊ ------
return this.http.post<User>(this.baseUrl + 'account/login', model).pipe(
map((user : User) => {
if (user) {
localStorage.setItem('user', JSON.stringify(user));
this.currentUserSource.next(user);
}
})
)
}
推荐阅读
- angular - Angular:如何测试使用“getCurrentNavigation”的组件?
- asp.net - 在两个 div 元素之间传输 Razor 变量
- java - 从文本文件读入,不匹配异常(以浮点数读入时)
- autosar - 是否有任何用于创建以太网集群描述和 SOME/IP 设置的 ARXML 模板?
- java - 令牌无效的语法错误,@预期,以及我在 eclipse 上的第一行的其他问题
- c# - 防止控制台应用程序锁定屏幕
- python - 我如何将来自多个 XPath 位置的信息(章节标题)存储到一个带有 python 的列表中?
- python - 将矩阵旋转 90 度
- jquery - 如何使用 jQuery Ajax 发布方法将数据发布回我的 node.js rest api 服务器
- javascript - js中函数的“覆盖”参数