У меня есть директива Angular (myUser
), которая работает. Он определен в проекте AngularJS 1.5 с использованием TypeScript следующим образом (я назначаю контроллер непосредственно внутри директивы). Директива (myUser
) связана со своим родительским модулем (вы можете увидеть это в нижней части примера кода ниже — вам нужно прокрутить)
class myUser {
controller: any;
templateUrl: string;
controllerAs: string;
constructor() {
this.controller = myCtrl;
this.controllerAs = 'ctrl';
this.templateUrl = '/mytemplate.html';
}
static userFactory() {
var instance = new myUser();
return instance;
}
}
class myCtrl {
global: any;
mySrv: any;
username: any;
focus: boolean;
static $inject = ['MyDependency', 'MyService'];
constructor(UserInfo, mySrv) {
this.global = UserInfo;
this.mySrv = mySrv;
this.myData = this.global ? this.global.myData : false;
this.focus = false;
}
check() {
if(this.myData){
return true;
};
return false;
}
signIn(model) {
this.mySrv.signIn(model);
}
signOut() {
this.mySrv.signOut();
}
}
class myOtherDir {
... other directive definition
}
class myOtherCtrl {
... other controller definition
}
angular
.module('shared.myNavigation', [])
.directive('myUser', myUser.userFactory)
.directive('myOtherDir', myOtherDir.dirFactory)
.controller('myOtherCtrl', myOtherCtrl)
Когда я запускаю приложение, директива заменяется содержимым /mytemplate.html:
html ...
<my-user></my-user>
=> заменяется разметкой шаблона
Однако, когда я изменяю директиву на компонент, используя API компонента Angular 1.5, подобное этому, объявление компонента в моем HTML больше не заменяется разметкой шаблона:
angular
.module('shared.myNavigation', [])
.component('myUser', myUser.userFactory)
.directive('myOtherDir', myOtherDir.dirFactory)
Ошибок нет, и единственное, что изменилось, это то, что теперь я связываю это с модулем как с компонентом, а не с директивой. Я просмотрел свой код и считаю, что он должен быть полностью совместим с API компонента. Есть ли что-то очевидное, что я упускаю? Я гуглил почти каждую похожую проблему, которую я мог найти, и я не уверен, где я ошибаюсь.