Я прохожу курс Angular и .net.
Я пытаюсь установить метод photourl.
Я получаю следующую ошибку\
Argument of type date is not assignable to parameter of type string
Ошибка находится в следующей строке.
this.changeMemberPhoto(this.currentUser.photoUrl);
Аргумент - это проблема
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { BehaviorSubject } from 'rxjs';
import { map } from 'rxjs/operators';
import { JwtHelperService} from '@auth0/angular-jwt';
import { environment } from 'src/environments/environment';
import { User } from '../_models/user';
@Injectable({
providedIn: 'root'
})
export class AuthService {
baseUrl = environment.apiUrl + 'auth/';
jwtHelpter = new JwtHelperService();
decodedToken: any;
currentUser: User;
photoUrl = new BehaviorSubject<string>('../../assets/user.png');
currentPhotoUrl = this.photoUrl.asObservable();
constructor(private http: HttpClient) {}
changeMemberPhoto(photoUrl: string) {
this.photoUrl.next(photoUrl);
}
login(model: any) {
return this.http.post(this.baseUrl + 'login', model).pipe(
map((response: any) => {
const user = response;
if (user) {
localStorage.setItem('token', user.token);
localStorage.setItem('user', JSON.stringify(user.user));
this.decodedToken = this.jwtHelpter.decodeToken(user.token);
this.currentUser = user.user;
this.changeMemberPhoto(this.currentUser.photoUrl);
}
})
);
}
register(model: any) {
return this.http.post(this.baseUrl + 'register', model);
}
loggedIn() {
const token = localStorage.getItem('token');
return !this.jwtHelpter.isTokenExpired(token);
}
}
Код идентичен инструкторам, поэтому я не знаю, в чем проблема.
Я включил класс User по запросу
import { Photo } from './photo';
export interface User {
id: number;
username: string;
knownAs: string;
age: number;
gender: string;
created: Date;
lastActive: Date;
photoUrl: Date;
city: string;
country: string;
interests?: string;
introduction?: string;
lookingFor?: string;
photos?: Photo[];
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


photoUrl — это дата в вашем классе и строка в вашем методе changeMemberPhoto.
В классе User измените его на:
photoUrl: string;
Я согласен с Сирилом, ваш пользовательский класс устанавливает дату photoUrl, но другой файл использует его как строку. Возможно, измените photoUrl: Date на photoUrl: String в пользовательском классе.
Я также согласен с Кириллом и Бобби. В Typescript типы важны для метода или свойства. В своем классе User вы объявляете photoUrl как тип Date. Поэтому, если вы хотите использовать это свойство или передать ему какой-либо метод, он должен быть параметром метода того же типа. Поскольку ваш шаблон именования, photoUrl должен быть строкой. Поэтому, пожалуйста, сделайте так, чтобы ваше свойство типа photoUrl было строкой, а ваш BehaviorSubject также принимал строку. Таким образом, вы не можете испускать другой тип, он также показывает вам ошибку.
Я вижу ошибку. PhotoURL в пользовательском классе — это дата.