การแก้ไขและ TypeScript ของเราเตอร์ UI

ฉันอยากรู้ว่าฉันจะใช้การแก้ไขของ UI Router กับ TypeScript ได้อย่างไร

.state("signin.notActivated", <ng.ui.IState> {
                    controller: "SigninCtrl",
                    controllerAs: "signin",
                    url: "/notActivated",
                    resolve: {
                        inProgress: function() {
                            return { formData : null }
                        }
                    }
                })

ในคอนโทรลเลอร์ของฉัน ฉันได้ฉีดการแก้ไขของฉันแล้ว

constructor(public $state : angular.ui.IState, private inProgress) {
            this.init();                
        }

        private init = () => {
            this.someData = this.inProgress.formData; // error
        }

ฉันได้รับข้อผิดพลาดของผู้ให้บริการที่ไม่รู้จัก เนื่องจาก TypeScript พยายามลงทะเบียนเป็นบริการ

ป้อนคำอธิบายรูปภาพที่นี่

สามารถทำได้หรือไม่?


person Thomas    schedule 15.01.2016    source แหล่งที่มา
comment
TypeScript ไม่ได้ลงทะเบียนอะไรเลย สิ่งนี้ถูกแปลงเป็นจาวาสคริปต์ธรรมดา ไม่มีอะไรอื่นอีก ดูเหมือนว่าฉันจะพลาดข้อผิดพลาดของคุณ สิ่งเดียวที่ฉันสังเกตเห็นในโค้ดของคุณคือการอ้างอิงสตริงของคุณไปยังคลาสคอนโทรลเลอร์ โดยปกติฉันใช้การอ้างอิง typescript แทน ซึ่งไม่มีเครื่องหมายคำพูด จาวาสคริปต์เป็นไปตามที่คาดไว้หรือไม่   -  person Bjørn Sørensen    schedule 16.01.2016
comment
@Thomas คุณสามารถแก้ไขปัญหานี้ได้หรือไม่?   -  person harishr    schedule 26.08.2016


คำตอบ (2)


ลองฉีดแบบนี้:

static $inject = ['$state', 'inProgress'];
constructor(public $state : angular.ui.IState, private inProgress) {
    this.init();                
}
person Eyescream    schedule 21.01.2016

ตรวจสอบให้แน่ใจว่าคุณเรียกใช้คอนโทรลเลอร์ผ่านเราเตอร์เท่านั้น การเรียกใช้คอนโทรลเลอร์โดยตรงจาก html ถึงคำสั่ง ng-controller (ng-controller="SigninCtrl as signin" ในกรณีของคุณ) จะไม่มีการแทรก inProgress ดังนั้นคุณจะพบกับข้อผิดพลาดนี้

person elankumaran    schedule 31.03.2016