javascript - convertir cadena a valor de enum en angular 8
Necesito pasar tipo enum al servidor. Pero cuando envío el formulario al servidor, envía campo enum como tipo string.
este es mi enum:
export enum PayTypes {
Free,
Subscribe
}
y este es mi formulario :
createForm(): void {
this.lessonAddForm = new FormGroup({
payType: new FormControl('', Validators.required),
});
}
addLesson(): void {
const payString = PayTypes[this.lessonAddForm.controls['payType'].value];
const payType: PayTypes = PayTypes[payString];
this.lessonAdd = this.lessonAddForm.value;
this.lessonAdd.payType = payType;
this.subscriptions = this.lessonService
.add(this.lessonAdd)
.subscribe(
res => {
if (res.success === true) {
this.alertService.success('', 'GENERAL.ADD_SUCCESS');
this.backToMenu();
}
}
);
}
y intento convertir una cadena a enum de esta manera:
const payString = PayTypes[this.lessonAddForm.controls['payType'].value];
const payType: PayTypes = PayTypes[payString];
this.lessonAdd = this.lessonAddForm.value;
this.lessonAdd.payType = payType;
pero no funciona.
¿Cómo puedo resolver este problema????
Respuesta #1
Debes convertir el valor dentro del corchete a cadena de esta manera
const payType: PayTypes = PayTypes[payString.toString()];
También puedes ver esta publicación
Actualización: Verifica cómo obtienes los datos de payString, ¿coinciden con la definición de tu enumeración? Ten en cuenta que tus datos de payString deben ser iguales a la clave de tu enumeración
Por ejemplo:
PayTypes['Free'] // This will work
Y
PayTypes['free'] // This won't
