在 Typescript(角度)中添加对$state的引用和对$rootScope$stateParams的引用
Add reference to $state and $stateParams to $rootScope in Typescript (angular)
我正在尝试根据当前状态的数据(在ui路由器中配置)设置我的角度应用程序的页面标题。
<title ng-bind="$state.current.data.pageTitle></title>
在此链接上,我找到了以下内容,以将对根范围的 $state/$stateParams 引用添加:
.run([ '$rootScope', '$state', '$stateParams',
function ($rootScope, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}])
如何将其转换为打字稿?
function run($rootScope: ng.IRootScopeService, $state : ng.ui.IState, $stateParams : ng.ui.IStateParamsService) {
$rootScope.$state // 'state' cannot be resolved
}
更新:此答案的先前版本不适用于角度严格模式或缩小。
因此,我建议将这个ng-strict-di指令添加到index.html:
<html data-ng-app="App" ng-strict-di> // see ng-strict-di
<head>
这将揭示正确的方法是:
module App
{
export class RootConfig
{
static inject = ['$rootScope', '$state', '$stateParams'];
constructor(
$rootScope: any, //ng.IRootScopeService,
$state: ng.ui.IStateProvider,
$stateParams: ng.ui.IStateParamsService)
{
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}
}
}
angular.module('App')
// wrong - not working in minified world
// .run(App.RootConfig);
// correct
.run(['$rootScope', '$state', '$stateParams', App.RootConfig]);
为什么$rootScope: any, //ng.IRootScopeService,
这个而不是这个:$rootScope: ng.IRootScopeService,
?为了让生活更轻松...并快速分配未声明的属性$state
和$stateParams
我找到了比将其设置为any
更干净的路线
declare module app {
interface IScope extends ng.IScope {
$root:IRootScopeService
}
interface IRootScopeService extends ng.IRootScopeService {
$state:ng.ui.IStateService
}
}
然后要使用它,只需声明像
constructor(
$rootScope: app.IRootScopeService,
$state: ng.ui.IStateProvider
{
$rootScope.$state = $state;
}
相关文章:
- 在gump和nodejs中使用Typescript时,未定义对require和exports的引用
- 将mongoose javascript代码转换为typescript.此引用丢失
- 我是否必须在每个文件中引用 TypeScript 定义
- 将ng2图表添加到Typescript/ Angular 2项目引用路径和.js文件的路径不正确
- Typescript中的引用和模块
- 如何引用typescript中的值
- TypeScript:类型定义(接口)的引用子类型
- 在 Typescript(角度)中添加对$state的引用和对$rootScope$stateParams的引用
- Typescript-不同文件中的模块函数引用-“;找不到符号“;
- 使用AngularJS和TypeScript以简单的方式引用
- 强制typescript不要删除未使用的引用
- 在typescript中引用javascript文件
- Google Geocoder 和 TypeScript 中的“this”引用
- 引用整个目录Typescript
- TypeScript文件中的JavaScript引用
- 如何在TypeScript中正确引用模块?
- typescript如何在没有引用typescript文件代码的情况下生成单个javascript文件
- 如何从数组引用TypeScript类中的此父方法's ForEach循环
- 使用AMD在Typescript中引用一个文件(模块)
- 当使用AMD模块时,避免在Typescript中重复引用/导入外部javascript库