Я пытаюсь получить пользователя из базы данных.Служба контроллеров должна возвращать контроллер при передаче имени пользователя в качестве параметра.Контроллер - это просто особый тип пользователя.
Ошибка, которую я получаю, когда пытаюсь проанализировать повторно зарегистрированного пользователя в Контроллере:
Argument of type 'Observable<Controller>' is not assignable to parameter of type 'string'
Вот часть, гдевозникает ошибка
this.currentController = JSON.parse (controllerService.getController (token.getUsername ()));
Ниже приведен мой код.
Служба контроллера
import {Injectable} from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Controller } from '../models/controller.model';
import {catchError} from 'rxjs/operators';
import { throwError} from 'rxjs';
import { FilterSearchControllerDTO } from
'../models.dto/filterSearchController.dto';
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
@Injectable()
export class ControllerService{
constructor(private http:HttpClient) {}
private controllerUrl = 'http://localhost:8080/api/controller/';
public getControllers() {
return this.http.get<Controller[]>(this.controllerUrl);
}
public getController(username: string) {
return this.http.get<Controller>(`${this.controllerUrl + 'getController'}/${username}`);
}
public deleteController(id: BigInteger){
const url = `${this.controllerUrl + 'deleteController'}/${id}`;
return this.http.get<boolean>(url);
}
public addController(controller: Controller){
return this.http.post(this.controllerUrl + 'addController',controller)
.pipe(
catchError(e => throwError(e))
);
}
public filterSearch(values: FilterSearchControllerDTO){
return this.http.post<Controller[]>(this.controllerUrl + 'searchFilter',values);
}
}
Компонент ControllerView
import { Component, OnInit, ViewChild } from '@angular/core';
import { HeaderComponent } from '../header/header.component';
import { ControllerService } from '../services/controller.service';
import { Controller } from '../models/controller.model';
import { Router } from '@angular/router';
import { TokenStorageService } from '../auth/token-storage.service';
@Component({
selector: 'app-controller-view',
templateUrl: './controller-view.component.html',
styleUrls: ['./controller-view.component.css']
})
export class ControllerViewComponent implements OnInit {
currentController: Controller;
@ViewChild("header") header: HeaderComponent;
showView: string = 'home';
constructor(private controllerService: ControllerService, private router: Router, private token: TokenStorageService) {
this.currentController = JSON.parse(controllerService.getController(token.getUsername()));
}
ngOnInit() {
this.header.controllerView();
}
onNavigate(feature: string){
this.showView = feature;
if(feature == 'logout') {
window.sessionStorage.clear();
this.router.navigate(['mainPage']);
window.alert("Successfully Logged out!");
}
}
}