我正在尝试使用 typescript 和组件控制器类的 Angular 1.5.3 组件路由器,但我无法将当前路由器注入到我的任何带有绑定的组件中:{$router:'<'}。当我在 chrome 调试器中检查任何组件的 $ctrl 时,它总是显示未定义。路由本身按预期工作(显示组件,路由链接工作,调用 $routerOnActivate)。我需要 $router 从代码中导航。
html页面:
<div ng-app="app">
<app></app>
</div>
编码
class AppCtrl {
}
var appComp: ng.IComponentOptions = {
template: `App <ng-outlet></ng-outlet>`,
$routeConfig: [
{ path: '/', name: 'List', component: 'listComp', useAsDefault: true },
{ path: '/new', name:'New', component:'newComp'}
],
bindings: { $router: '<' },
controller:AppCtrl
};
class ListCtrl {
message = '';
$routerOnActivate=() => {
this.message = 'is activated';
}
}
var listComp: ng.IComponentOptions = {
template: `<div><h1>List : {{$ctrl.message}}</h1><a ng-link="['New']">new</a></div>`,
bindings: { $router: '<' },
controller: ListCtrl
};
class NewCtrl {
message = '';
$routerOnActivate = () => {
this.message = 'New is activated';
}
}
var newComp: ng.IComponentOptions = {
template: `<div><h2>New : {{$ctrl.message}}</h2></div>`,
bindings: { $router: '<' },
controller: NewCtrl,
}
angular.module('app', ['ngComponentRouter'])
.value('$routerRootComponent', 'app')
.component('app', appComp)
.component('listComp', listComp)
.component('newComp', newComp)
;