Я хочу показать данные на домашней странице из API REST (требуется авторизация 'username' и 'password' для доступа) с использованием Interceptor в Angular 6. Однако ранее я использовал Node.js для получения данных иэто было довольно успешно в то время.Более того, когда я переключаюсь на перехватчик, он показывает следующую ошибку:
ERROR TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
at subscribeTo (subscribeTo.js:41)
at subscribeToResult (subscribeToResult.js:6)
at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapSubscriber._innerSub (mergeMap.js:70)
at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapSubscriber._tryNext (mergeMap.js:67)
at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapSubscriber._next (mergeMap.js:50)
at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.next (Subscriber.js:54)
at Observable._subscribe (scalar.js:5)
at Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable._trySubscribe (Observable.js:42)
at Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable.subscribe (Observable.js:28)
at MergeMapOperator.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapOperator.call (mergeMap.js:28)
В моем решении я создал функцию в компоненте посадки, которая выглядит следующим образом:
const userData = { username: 'anonymous', password: '' };
this.http
.post(`${this.baseURL}/auth/jwt/authenticate`, userData)
.subscribe(res => {
// console.log(res);
const token = JSON.parse(res['_body']).token;
this.publicToken = token;
if (token) {
this.publicTokenStatusListener.next(true);
localStorage.setItem('public-token', token);
}
});
Перехватчик выглядит так:
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
const authToken = localStorage.getItem('public-token');
const copiedReq = req.clone({
params: req.params.set('auth', authToken)
});
return next.handle(copiedReq);
}
Из службы я возвращаю данные REST (GET), чтобы получить наблюдаемое.Однако, это не работает, как я ожидаю.
Я могу получить «жетон» в Перехватчике.Жду некоторых предложений.
Заранее спасибо.