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)