2016-04-01 12 views
1

so, ich versuche, die Komponente 1.5 Komponente zu verwenden, aber mit fetten Pfeilen Codierung. Ich babel bin mit dem Systemangular 1.5 Komponente und babel

Meine Komponente zu bauen, auf das Nötigste abgespeckt, mein Problem zu zeigen, ist somit:

angular.module('myApp') 
    .component('myComponent', { 
     controller:() => { 
      this.$onInit =() => {}; 
     }, 

     template: `<p>foobar1</p>` 
    }); 

wenn ich versuche, und diese Komponente laden, erhalte ich einen Fehler beschwert mich über

typeError: Cannot set property '$onInit' of undefined 

so, wenn ich an den Quellen in Chrom devtools sehen, ich sehe

angular.module('myApp').component('myComponent', { 
/** @ngInject */ 
controller: function controller() { 
    undefined.$onInit = function() {}; 
}, 
template: '<p>foobar1</p>' 

});

Ich würde erwarten, dass ich etwas sehr falsch gemacht haben, aber es nicht sehen kann;)

jemand irgendwelche Tipps?

dank

+0

wenn ich den Controller defintion an den Controller zu ändern: function() { dann geht das Problem weg .. – jmls

Antwort

1

Angular schafft neue instantion der Controller für jede Komponente. In ES5 haben wir keine Klassen, also übergeben wir die Konstruktionsfunktion hier.

Aber in es6 wir haben Klasse, so dass Sie es stattdessen

let myComponent = { 
    controller: myComponentController, 
    template: `<p>foobar1</p>` 
}; 

class myComponentController{ 
    constructor() { 
    this.answer = 41; 
    } 
    $onInit() { 
    this.answer++; 
    } 
}; 

angular.module('myApp') 
    .component('myComponent', myComponent); 

Pascal geschrieben hat es auch etwas über hier verwenden können: http://blog.thoughtram.io/angularjs/es6/2015/01/23/exploring-angular-1.3-using-es6.html

Verwandte Themen