У меня есть компонент входа. После того, как appId для входа в систему установлен в локальном хранилище, также необходимо обновить объект AppId службы. Служба содержит ключ заголовка «AppId», значение этого AppId берется из компонента входа в систему или локального хранилища.
@Injectable({
providedIn: 'root'
})
export class WebconfigService {
baseUrl = "https://localhost:44330/api/";
AppId = ""
constructor(private http: HttpClient,){
this.httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
"Accept": "application/json",
'AppId' :This.AppId
})
};
}
get(path: string,): Observable<any> {
return this.http.get(this.baseUrl+path, this.httpOptions)
.pipe(catchError(this.formatErrors));
}
SetTokenFromLogin(appId){
this.AppId=appId
}
}
После авторизации AppId не переходит в сервис. Из метода входа в систему я передаю значение следующим образом.
this.authService.LoginUser(LoginForm.value).subscribe((data)=>
{ this.webConfigService.SetTokenFromLogin(data["data"]["user"]["appId"])
})
Я не понимаю, как это может быть скомпилировано, если сервис не набран как any. This также является недействительным кодом TypeScript.





По-видимому, функция внутри subcribe() показывает, что она передает token в вашем компоненте в свойство AppId службы.
Исправьте это по:
this.authService.LoginUser(LoginForm.value).subscribe((data)=>{
this.webConfigService.SetTokenFromLogin(data["data"]["user"]["appId"]);
})
Обновление:
Как я вижу, вы устанавливаете свой HttpOptions внутри contructor, который оценивается только один раз при запуске службы. Это означает, что свойство AppId внутри вашего HttpOptions всегда имеет значение пустой строки.
Ваша логика должна устанавливать HttpOptions внутри SetTokenFromLogin() после получения ответа API.
SetTokenFromLogin(appId){
this.httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
"Accept": "application/json",
'AppId' :appId
})
};
}
но после входа в систему следующий запрос не обновляет AppId в заголовке
Это потому, что вы устанавливаете свой httpOptions внутри конструктора, который оценивается только один раз при запуске службы. Ваша логика должна устанавливать HttpOptions внутри SetTokenFromLogin() , а не из конструктора.
Обновлен ответ
Кажется, что
this.webConfigService.SetTokenFromLogin(this.token,data["data"]["user"]["appId"])передаетtokenметоду, а не appId