मैं डेटाबेस से उपयोगकर्ता प्राप्त करने की कोशिश कर रहा हूँ। उपयोगकर्ता नाम को पैरामीटर के रूप में पारित करते समय नियंत्रक सेवा को नियंत्रक वापस करना चाहिए। नियंत्रक सिर्फ एक विशिष्ट प्रकार का उपयोगकर्ता है।

जब मैं सेवानिवृत्त उपयोगकर्ता को नियंत्रक में पार्स करने का प्रयास करता हूं तो मुझे जो त्रुटि मिलती है वह है:

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);                 

}

}

नियंत्रक दृश्य घटक

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!");
    }
  }

}
0
lastSheep 24 जिंदा 2019, 17:15

1 उत्तर

सबसे बढ़िया उत्तर

आपकी सेवा में getController() विधि एक Observable<Controller> लौटाती है। तो आप मूल रूप से इससे Controller वापस नहीं कर सकते। इसके बजाय, आपको इसकी सदस्यता लेने और मूल्य प्राप्त करने की आवश्यकता है जैसे:

नियंत्रक दृश्य घटक

constructor(private controllerService: ControllerService, private router: Router, private token: TokenStorageService) { 

    this.controllerService.getController(token.getUsername()).subscribe((response) => {
        this.currentController = response;
    })

}
0
Harun Yilmaz 24 जिंदा 2019, 17:49