なぜ、生成されたJavaScriptを見ればいいのかは明らかです。
var MyController = (function (_super) {
__extends(MyController, _super);
function MyController() {
_super.apply(this, arguments);
this.myPrivate = 'myPrivateString';
}
return MyController;
}(BaseController));
あなたの私有財産はあなたのコントローラ上の他のプロパティとして終わります。
フル蒸散hereを見ることができます。
解決策は、通常の$ ctrlではなく、ビューが使用するビューモデルのようなものを設定できるパラメータ化されたベースコントローラを持つことです。
それはこのようになります:
class BaseController<T> {
protected scope;
protected viewModel: T;
constructor(scope: any, modelType: { new(): T; }) {
this.scope = scope;
this.viewModel = new modelType();
this.scope["viewModel"] = this.viewModel;
}
}
class MyParticularViewModel {
public somethingForTheView: string;
}
class MyController extends BaseController<MyParticularViewModel> implements SomeInterface {
private myPrivate: string = 'myPrivateString';
constructor(scope) {
super(scope, MyParticularViewModel);
}
}
をビューで、その後、必要なプロパティにアクセスするには、のViewModelプロパティを使用することができます。
私はこれを実際にプロジェクトで使用しましたが、かなりうまく機能しました。詳細については、hereを使用したスターターテンプレートを見ることができます。
プライベートメンバーを初期化するためにパラメータ化されたコンストラクタを試しましたか? – gkb
私は差別だけでなく、実際の使用を防止したいと思います。 – jvrnt
これは実際にはかなりの引数IMOです。ありがとう – jvrnt