Javascript 无法使用typescript访问angular中一个控制器中另一个控制器中声明的$rootscope属性

Javascript 无法使用typescript访问angular中一个控制器中另一个控制器中声明的$rootscope属性,javascript,angularjs,typescript,typescript1.5,Javascript,Angularjs,Typescript,Typescript1.5,我在ts文件中声明了一个rootscope自定义属性,如下所示 module MyApp.Entity{ export interface IRootScope extends ng.IRootScopeService { userData: any; clientData: any; } } 在我的一个服务文件中,我分配了值 export class Service1 { constructor(priva

我在ts文件中声明了一个rootscope自定义属性,如下所示

module MyApp.Entity{

    export interface IRootScope extends ng.IRootScopeService {
        userData: any;
        clientData: any;
    }
} 
在我的一个服务文件中,我分配了值

    export class Service1 {

            constructor(private apiService: MyApp.Common.Services.apiService, private notificationService: MyApp.Common.Services.notificationService,
                 private $base64: JQueryBase64Static, private $cookieStore: ng.cookies.ICookieStoreService, private $rootScope: MyApp.Entity.IRootScope) {
            }

    saveData(){
    this.$rootScope.clientData = clientData; // Data got assigned 


    }
}
现在在另一个控制器文件中,我试图访问这个rootscope属性

class controller2{
Clients: any;
constructor(private service1: MyApp.Service.Service1, private $rootScope: MyApp.Entity.IRootScope){
this.Clients = this.$rootScope.clientData; // clientData is Undefined i.e here //it is creating new rootscope again I guess ..so How to access a single global //rootscope
}
  }

您使用的是
this.$rootScope
它是$rootScope的一个不同实例,因为如果您删除
它,它只在您当前的作用域中定义。
它应该可以工作
除非您绑定了不同的作用域,否则它是特定于当前运行的模块/作用域的。是的,那么如何解决?知道吗?这是个坏习惯。你为什么要这样使用globals?服务是单例的,您最好使用它们来共享数据。与前面的注释和答案相反,使用
构造函数(private$rootScope)
在控制器类中访问
是绝对合法的。我最好的猜测是你有缩小问题。在类中添加
static$inject=['service1','$rootScope']//依赖项
将在我删除此项时修复此问题。在使用rootScope的控制器中没有错误,但是当我在服务中删除我声明的位置时。。找不到名称“$rootScope”。您是指实例成员“this.$rootScope”吗?即使在服务这个。在我使用的控制器中放置和删除,但仍然未定义