Я нашел этот пример службы для получения IP-адреса.
Эта служба возвращает Observable<Object>
, который я хотел бы присвоить / сохранить в String- Переменная.
getIpAddress() {
return this.http
.get('https://api.ipify.org/?format=json')
.pipe(
catchError(this.handleError)
);
}
Я все еще не очень "обучен" с Observables. Я внедрил эту Службу в свою собственную Службу (Службу аутентификации), где я пытаюсь получить доступ к фактическому значению, которое будет представлять собой строку.
Я знаю, что мне придется подписаться и передать / отобразить карту чтобы использовать его, но вот где я потерян ...
console.log(this.visitorService.getIpAddress().subscribe(ip => this.ipAdress = ip ?? ));
Наконец, я хочу использовать IP-адрес (строку) внутри моего метода входа в систему (где будет console.log заменил, и API получил этот третий параметр тела)
login(username: string, password: string): Observable<User> {
// der globale interceptor (jwt) hängt halt auch hier das authorization header feld hinzu; macht nichts
console.log(this.visitorService.getIpAddress().subscribe(ip => this.ipAdress = ip ?? ));
return this.http.post<UserRaw>(
`${environment.apiUrl}/login`, { username, password } )
.pipe(map(userRaw => UserFactory.fromRaw(userRaw)))
.pipe(map(user => {
// local storage = client persistence (user bleibt eingeloggt)
localStorage.setItem('currentUser', JSON.stringify(user));
this.currentUserSubject.next(user);
// console.log(user.username);
return user;
}));
ОБНОВЛЕНИЕ
this.visitorService.getIpAddress().subscribe(ip => { console.log(ip); } );
возвращает
но после этого я не могу получить к нему доступ / конвертировать: - /
this.visitorService.getIpAddress().subscribe(ip => { this.ipAdress = ip.ip } );