Estoy trabajando en la aplicación Ionic2. Estoy llamando a una función desde una página. ¿Es posible que use un nombre de variable en la llamada de función? p.ej
código original: this._userDataService.getGrandQuestionsFromServer(this.passedId, newLevel)
codigo esperado::
this._userDataService.get`${this.questionModuleName}`QuestionsFromServer(this.passedId, newLevel)Debería poder lograr esto con la notación de corchetes. Aquí hay un ejemplo de trabajo:
const obj = { foobar(arg) { console.log(arg); } }; const bar = "bar"; obj[`foo${bar}`]("It works!");En su código, intente esto:
this._userDataService[`get${this.questionModuleName}QuestionsFromServer`](this.passedId, newLevel)Hay una función llamada Tagged template literals
Una forma más avanzada de literales de plantilla son los literales de plantilla etiquetados. Las etiquetas le permiten analizar literales de plantilla con una función. El primer argumento de una función de etiqueta contiene una matriz de valores de cadena. Los argumentos restantes están relacionados con las expresiones. Al final, su función puede devolver su cadena manipulada (o puede devolver algo completamente diferente como se describe en el siguiente ejemplo). El nombre de la función utilizada para la etiqueta se puede nombrar como quieras. MDN - Cadenas de plantilla
Puede usarlo para preprocesar la cadena y generar la llamada de función que desee.
Seguro que puede:
class A { callFunction(name:string) { this[`get${name}`](name); } getAmount(name: string) { alert(name); } } let a = new A(); a.callFunction('Amount');