javascript - example - ¿Son incompatibles las funciones de flecha ES6 con Angular?



funciones javascript (2)

Aquí hay una función normal de ES5 en mi código angular que funciona:

app.run(function($templateCache){ $templateCache.put('/some','thing') });

Quería convertirlo a la función de flecha ES6

app.run($templateCache => $templateCache.put('/some','thing'));

pero da el error

Uncaught Error: [$injector:unpr] Unknown provider: '/some'Provider <- '/some'
http://errors.angularjs.org/1.4.6/$injector/unpr?p0='%2Fsome'Provider%20%3C-%20'%2Fsome'
REGEX_STRING_REGEXP  @ angular.js:68
(anonymous function) @ angular.js:4287
getService           @ angular.js:4435
(anonymous function) @ angular.js:4292
getService           @ angular.js:4435
invoke               @ angular.js:4467
(anonymous function) @ angular.js:4297
forEach              @ angular.js:336
createInjector       @ angular.js:4297
doBootstrap          @ angular.js:1657
bootstrap            @ angular.js:1678
angularInit          @ angular.js:1572
(anonymous function) @ angular.js:28821
trigger              @ angular.js:3022
eventHandler         @ angular.js:3296

¿Son incompatibles las funciones de flecha ES6 con Angular?

EDITAR: Pensé que quizás Angular no puede inferir el nombre $templateCache y por lo tanto no puede inyectarlo, pero luego lo registré en la consola y lo muestra correctamente:

app.run($templateCache=>console.log($templateCache));
// => 
//  Object {}
//      destroy: function()
//      get: function(key)
//      info: function()
//      put: function(key, value)
//      remove: function(key)
//      removeAll: function()
//      __proto__: Object

https://src-bin.com



Answer #2

Probé otra variación que funcionó: (x)=>… (en lugar de x=>… )

app.run(($templateCache) => $templateCache.put('/some','thing'));

Supongo que necesita paréntesis por alguna razón





arrow-functions