Understanding lets say i will receive data A. so when A==='High' i want to set color Red and when its 'Normal' i want to set green and when its 'Low' i want to set yellow
Date i received
{
"expires_in": 0,
"data": [
{
"id": 94,
"patientID": 40,
"systolicBloodPressure": "120",
"smokers": "Yes",
"lipidProfile": "4.4",
"lipidProfileStatus": "Normal",
"spiroRatio": 102.22,
"spiroStatus": "Normal",
"diabetes": "No",
"liver": "0.32",
"kidney": "53.67",
"kidneyStatus": "Low",
"depression": "Normal",
"anxiety": "Normal",
"stress": "Normal"
}
],
}
Code that i tried here im getting map is not a function.Any alternative way to set color is much appreciated.By the way im new to angular please help.Thanks
getClientProfileInfo() {
//debugger
this.clientService.getClientProfileInfo(this.clientId).subscribe((response: any) => {
if (response != null && response.statusCode == 200) {
this.clientProfileModel = response.data;
this.isPortalActivate = this.clientProfileModel.patientInfo[0].isPortalActivate;
const userId = this.clientProfileModel.patientInfo[0] && this.clientProfileModel.patientInfo[0].userID;
this.clientService.updateClientNavigations(this.clientId, userId);
if (this.clientProfileModel) {
this.getChatHistory();
}
this.clientProfileModel = (response.data || []).map((obj: any) => {
obj.customColorForLipidProfile = this.setColor(obj.lipidProfileStatus) ;
obj.customColorForLungsSpiro = this.setColor(obj.spiroStatus) ;
obj.customColorForLiverStatus = this.setColor(obj.liverStatus);
obj.customColorForKidney = this.setColor(obj.kidneyStatus) ;
return obj;
});
}
});
}
setColor(key) {
let customColor;
switch (key) {
case 'High': {
customColor = '#ff5454';
break;
}
case 'Normal': {
customColor = '#fd9b4b';
break;
}
default: {
// default case is for Low status
customColor = '#53D8A2';
break;
}
}
return customColor;
}
Tried this approach too this code only prints the else part i dont know what went wrong
if(this.clientProfileModel.patientHealthScores[0]!=undefined && this.clientProfileModel.patientHealthScores[0].kidneyStatus === 'Low'){
this.customColor ='#ff5454';
}else if(this.clientProfileModel.patientHealthScores[0]!=undefined && this.clientProfileModel.patientHealthScores[0].kidneyStatus === 'Normal') {
this.customColor ='#fd9b4b';
} else {
this.customColor ='#53D8A2';
}
CodePudding user response:
To solve "map is not a function."
error be sure you imported map
function from rxjs. It should be like below:
import { map } from 'rxjs/operators';
If you have imported map function and still you are getting error. Be sure that array that calling map function is not null
or undefined
.
If they are all ok and you are still getting error. Call map function in pipe
this.clientProfileModel = (response.data || []).pipe(
map((obj: any) => {
obj.customColorForLipidProfile = this.setColor(obj.lipidProfileStatus) ;
obj.customColorForLungsSpiro = this.setColor(obj.spiroStatus) ;
obj.customColorForLiverStatus = this.setColor(obj.liverStatus);
obj.customColorForKidney = this.setColor(obj.kidneyStatus) ;
return obj;
})
);