【发布时间】:2021-09-30 13:10:54
【问题描述】:
我有一个相当复杂的代码已经运行了两天,我正在使用 rxjs 运算符中的 map 运算符从 IUser 接口中获取 IUser 的值。但我不断收到此错误:
“OperatorFunction
”类型的参数不可分配给“OperatorFunction
提前致谢。
Account.service.ts
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { BehaviorSubject } from 'rxjs';
import { map } from 'rxjs/operators';
import { environment } from 'src/environments/environment';
import { IUser } from '../shared/models/user';
@Injectable({
providedIn: 'root'
})
export class AccountService {
baseUrl = environment.apiUrl;
private currentUserSource = new BehaviorSubject<IUser>(null!);
currentUser$ = this.currentUserSource.asObservable();
constructor(private http: HttpClient, private router: Router) { }
login(values: any) {
return this.http.post(this.baseUrl + 'account/login', values).pipe(
map((user: IUser) => {
if (user) {
localStorage.setItem('token', user.token);
this.currentUserSource.next(user)
}
})
);
}
login.component.ts
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit {
constructor() { }
ngOnInit(): void {
}
}
用户.ts
export interface IUser {
email: string;
displayName: string;
token: string;
}
【问题讨论】:
-
你在哪里订阅 observable?无论如何,
map总是会返回一些东西(在你的代码中没有任何意义)。我怀疑您应该改用tap,或者可能让函数不返回任何内容,并在subscribe中直接在login中执行该逻辑。
标签: angular typescript