Tekad dan TypeScript UI Router

Saya ingin tahu bagaimana cara menggunakan tekad UI Router dengan TypeScript.

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

Di pengontrolku, aku telah menyuntikkan tekadku.

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

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

Saya mendapatkan kesalahan penyedia tidak dikenal, karena TypeScript mencoba mendaftarkannya sebagai layanan.

masukkan deskripsi gambar di sini

Bisakah ini dilakukan?


person Thomas    schedule 15.01.2016    source sumber
comment
TypeScript tidak mendaftarkan apa pun. Ini diubah menjadi javascript biasa, tidak ada yang lain. Sepertinya saya melewatkan kesalahan Anda. Satu-satunya hal yang saya perhatikan dalam kode Anda adalah referensi string Anda ke kelas pengontrol. Biasanya saya menggunakan referensi TypeScript, yaitu tanpa tanda kutip. Apakah javascriptnya sesuai harapan?   -  person Bjørn Sørensen    schedule 16.01.2016
comment
@Thomas, apakah Anda dapat mengatasi masalah ini?   -  person harishr    schedule 26.08.2016


Jawaban (2)


Coba suntikkan seperti ini:

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

Pastikan Anda memanggil pengontrol hanya melalui router. Memanggil pengontrol langsung dari html melalui arahan ng-controller (ng-controller="SigninCtrl as signin" dalam kasus Anda) tidak akan memasukkan inProgress sehingga Anda akan berakhir dalam kesalahan ini.

person elankumaran    schedule 31.03.2016