#angular
#angular
Вопрос:
Я получаю эту ошибку, когда использование observable class раньше работало нормально
login(userId: string, userPassword: string): Observable<User> { >>> I am getting error here
this.http.post(this.Url,'/' {userId} '/' {userPassword})
.pipe(map(user => {
// 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);
return user;
}));
}
Это интерфейс
export interface User {
success:string
userId:string
userPassword:string
token?: string
}
Комментарии:
1. Можете ли вы вставить точную ошибку / журнал?
2. Добавьте
return
непосредственно передthis.http.post
3. Аргумент типа ‘Object’ не может быть присвоен параметру типа ‘User’. Тип ‘Object’ может быть присвоен очень немногим другим типам. Вы имели в виду использовать вместо этого тип ‘any’? В типе ‘Object’ отсутствуют следующие свойства типа ‘User’: успех, идентификатор пользователя, пароль пользователя
4. @frunkad это не работает
5. Перед возвратом
user
приведите его к типу.return (user as User)
Ответ №1:
Вам не хватает return
before this.http.post
и использовать tap
login(userId: string, userPassword: string): Observable<User> {
return this.http.post(this.Url,'/' {userId} '/' {userPassword})
.pipe(tap(user => {
// 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);
}));
}
Ответ №2:
Два изменения
-
Пользователь с приведенным типом
-
возвращаемый наблюдаемый
login(userId: string, userPassword: string): Observable<User> { return this.http.post(this.Url,'/' {userId} '/' {userPassword}) .pipe(map(user => { // 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); return (user as User); })); }