2016-12-28 30 views
1

我正在使用角色爲1.5的Typescript。我有一個問題將一個變量傳遞給一個組件。Typescript中的角度1.5組件不傳遞綁定變量字符串

下面是相關的代碼 - 我已經刪除了大部分不相關的代碼。

module xyz.dashboard { 

class PatientPhaseCountController { 

    public static $inject = []; 

    public title: string; 

    public chartType: string; 

    ///// /* @ngInject */ 
    constructor() { 
     this.title = 'Patient Phase Count'; 

     console.log(this.chartType); 
     this.$onInit(); 
    } 

    public $onInit(): void { 
     console.log(this); 
    }; 

} 

class PatientPhaseCount implements ng.IComponentOptions { 
    public bindings: any; 
    public controller: any; 
    public templateUrl: string; 

    constructor() { 
     this.bindings = { 
      chartType: '@' 
     }; 
     this.controller = PatientPhaseCountController; 
     this.templateUrl = 'app/dashboard/patientPhaseCount/patientPhaseCount.component.html'; 
    } 
} 

}

和這裏的HTML片段:

圖圖表始終是不確定的。任何幫助表示讚賞。

回答

0

我有一個類似的問題,我的解決方案是將一個$ scope服務注入控制器類。 $ scope包含一個控制器,默認情況下這個控制器叫做$ ctrl,在$ ctrl中你可以找到你的綁定。所以,對於你的情況,解決方案將是這樣的

module xyz.dashboard { 
     class PatientPhaseCountController { 
     public static $inject = []; 
     public title: string; 
     public chartType: string; 
     ///// /* @ngInject */ 
     constructor(private $scope:any) { 
      this.title = 'Patient Phase Count'; 
      console.log(this.$scope.$ctrl.chartType); 
      this.$onInit(); 
     } 
     public $onInit(): void { 
      console.log(this); 
     }; 
     } 

     class PatientPhaseCount implements ng.IComponentOptions { 
     public bindings: any; 
     public controller: any; 
     public templateUrl: string; 
     constructor() { 
      this.bindings = { 
       chartType: '@' 
      }; 
      this.controller = ["$scope",($scope:any)=>{ 
       return new PatientPhaseCountController($scope); 
      }; 
      this.templateUrl = 'app/dashboard/patientPhaseCount/patientPhaseCount.component.html'; 
     } 
     } 
    }