OK、私は状態プロバイダのリファレンスを閉じることができるプロバイダを用意したいと思っていました。だから、私はJSコードを持っていると私はTSに移行しようとしている。これは私がこれまで行ってきたことですが、なんらかの理由でこのようなメソッドがないと不平を言っています(プロパティ 'get'はタイプ 'IReferenceProvider'には存在しません。 'IReferenceProviderGetterInterface'メソッドはうまくやっているようですが、私は正しいとは思わない「injectRef」メソッドを失っているので、正しい場所にインターフェイスがあると思います)。誰もが前にこの問題を抱えていた、私が間違っていることを指摘することはいいだろう。問題をgoogle-ingしてみましたが、すべてがわかります。
export interface IReferenceProvider extends angular.IServiceProvider {
injectRef(name: string, ref: angular.ui.IUrlRouterProvider | angular.ui.IStateProvider): void;
}
export interface IReferenceProviderGetterInterface {
get(name: string): angular.ui.IUrlRouterProvider | angular.ui.IStateProvider;
}
class ReferenceProvider implements IReferenceProvider {
private refs: { [key: string]: angular.ui.IUrlRouterProvider | angular.ui.IStateProvider } = {};
$get(): IReferenceProviderGetterInterface {
return {
get: (name: string): angular.ui.IUrlRouterProvider | angular.ui.IStateProvider => {
return this.refs[name];
}
};
}
injectRef(name: string, ref: angular.ui.IUrlRouterProvider | angular.ui.IStateProvider): void {
this.refs[name] = ref;
}
}
angular.module("app")
.provider("refs", ReferenceProvider);
}
と、私はこれを使用している方法です::とにかく、ここでのスニペットがある機能get
が本当にdoesntのIReferenceProvider
上に存在し
static $inject: Array<string> = ["refs"];
private $stateProvider: angular.ui.IStateProvider;
constructor(refs: IReferenceProvider) {
this.$stateProvider = refs.get("$stateProvider");
...
}
私はこれも試してみたのですが、元のJSで書かれたものとは少し異なるコードを出すので、確信が持てませんでした。私はインターネット上のいくつかの他のガイドをチェックして、彼らは私がそれを持っていた方法を完了しましたが、これは今になっていると思いますか? – Meshko
ええ、これはうまくいくはずです。代わりに、 'refs。$ get()。get(" $ stateProvider ");'のように単にプロバイダを使うこともできますが、それは私には間違っているようです... – Nayish
大丈夫..あなたは芽吹く! – Meshko