Хорошо, позвольте мне попытаться обобщить как можно лучше.Я новичок в Angular, довольно тщательно искал, но, похоже, не могу найти ответ на мою проблему:
Сейчас у меня есть: Api.Service.ts
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
const httpOptions = {
headers: new HttpHeaders({
'Accept': 'application/json',
'Content-Type': 'application/json'
})
};
@Injectable({ providedIn: 'root' })
export class TokenService {
private tokenUrl = 'http://urlofapi/auth/token';
constructor(private http: HttpClient) { }
addToken(): Observable<any> {
return this.http.post(this.tokenUrl, httpOptions);
}
}
api.component.ts
import { Component, OnInit } from '@angular/core';
import { TokenService } from '../api.service';
@Component({
selector: 'app-api',
templateUrl: './api.component.html',
styleUrls: ['./api.component.scss']
})
export class ApiComponent implements OnInit {
constructor(private tokenService: TokenService) { }
ngOnInit() {
this.tokenService.addToken().subscribe((data => {
this.data = data;
const finalToken = this.data['token'];
console.log(finalToken);
});
}
}
Токен возвращается из API через рукопожатие POST.Он возвращается в формате:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVVUlEIjoiYTM3YWFmNzAtZjU0Yy00MGMwLWEwZGUtOTE4NTBkNjY1ODI2IiwiZGV2aWNlSWQiOiIxMjIzMzMiLCJleHBpcmVzQXQiOiIyMDE4LTExLTI5VDIwOjI4OjM3WiJ9.VcTt_TJWFA58iBCDS0JnTAJkH9EzU15QES9k0vI84Ic"
}
Я записываю токен на консоль, поэтому я знаю, что он определяет и получает его.
Итак, моя проблема Я получаю токен, он устанавливается как finalToken, он регистрируется на консоли.Проблема в том, что по какой-то причине эта переменная не видна никому из остальных приложений
, поэтому, если я попытаюсь вызвать ее из любого места за пределами оболочки ngOnInit () {}, она вернется как неопределенная.
Например, если я хочу напечатать его на экране в моем api.component.html, используя:
{{finalToken}}
в браузере, я получаю:
<p _ngcontent-c1=""></p>
без ошибок, но переменная не тянет
ТАК ОЧЕНЬ tl: dr;Можно ли сделать const finalToken доступным во всем мире?Мне нужно будет иметь возможность отправить его в заголовке любых дополнительных запросов к API, но сейчас я даже не могу получить к нему доступ в HTML компонента, в котором он находится