[SOLVED] How to store the return value of services function as array of object in my another ts file

Issue

I want to store the returned value of function in the services, into array of object of my ts file

getserver(id:number) {
    const server = this.servers.find(
      (s) => {
        return s.id === id;
      }
    )
  }

this function return type is void and ,But I want to store it in ts file as object so I am getting the error

*Error
type void is not assignable to type
{id:number,name:string,status:string}[];

Here my question is what I am doing wrong, should i convert this void type retrun value into object or something then how?

edit-server.ts

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { ServerService } from '../../servers.service';

@Component({
  selector: 'app-edit-server',
  templateUrl: './edit-server.component.html',
  styleUrls: ['./edit-server.component.css']
})
export class EditServerComponent implements OnInit {
  servers!: {id:number,name:string,status:string}[];
  constructor(private route: ActivatedRoute, private serviceserv: ServerService) { }
 
  serverName = '';
  serverStatus = '';
  ngOnInit(): void {
    
   this.servers= this.serviceserv.getserver(2);


  }
  onupdate() {
  
   this.serviceserv.updateserver(this.servers.id, {name:this.serverName,status:this.serverStatus});
  }

}

server.service.ts

import { Injectable } from '@angular/core';
@Injectable({ providedIn: 'root' })
export class ServerService {
  
   servers = [
    {
      id: 1,
      name: 'ProductionServer',
      status:'online'
    },
    {
      id: 2,
      name: 'TestServer',
      status: 'online'
    },
    {
      id: 3,
      name: 'DevServer',
      status: 'offline'
    }
  ];
  getservers() {
    return this.servers;
  }
  getserver(id:number) {
    const server = this.servers.find(
      (s) => {
        return s.id === id;
      }
    )
    console.log(server!.id);
   
  }
  updateserver(id: number, serverInfo: { name: string, status: string }) {
    const server = this.servers.find(
      (s) => {
        return s.id === id;
      }
    );
    if (server) {
      server.name = serverInfo.name;
      server.status = serverInfo.status;
    }

  }

}

Solution

  Instead doing this 

getserver(id:number) { const server = this.servers.find( (s) => { return s.id === id; } )

 I think you can do:
    
    getserver(id:number) { 
    return this.servers.find( (s) => { return s.id === id; } )
    }
    Or 
    
    getserver(id:number) { const server = this.servers.find( (s) => { return s.id === id; } 
    
    return server;
    )}

Answered By – Samba

Answer Checked By – Timothy Miller (BugsFixing Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *