I created a little test typescript/angularjs website.
I have this module with a static variable which I want to bind to the html-document so that I can see the current logged-in user.
module mytest.constants {
export class CurrentSession {
public static CURRENT_USER: string = "Tobi";
}
}
the problem is: the current scope is a controller which is separated from my CurrentSession-class.
I would like to do something like
<div class="label" style="color:green">
Logged in as: {{mytest.constants.CurrentSession.CURRENT_USER}}
</div>
Another way I could do is to add a class-member to the controller and set it in constructor like:
this.CurrentUSer = mytest.constants.CurrentSession.CURRENT_USER
but I would prefer to bind the static-variable directly to the html-file.
is this possible?
You can't bind static properties like this, Angular just doesn't check those in its digest cycle. You can however create a scope/this reference to the class itself. Something like this:
module mytest.constants {
export class CurrentSession {
public static CURRENT_USER: string = "Tobi";
CurrentSession = CurrentSession;
}
}
So basically it will create own property like this.CurrentSession = CurrentSession
.
Then in template (assuming you are using controllerAs syntax with session
refer to controller instance) you would be able to bind CURRENT_USER
as
<div>{{session.CurrentSession.CURRENT_USER}}</div>
thank you dfsq for your quick answer.
I finally found another solution.
I first set a variable called "CurrentSession" in my app.ts and set the value to a new Instance of my Object
angular.module("app", [])
.constant("CurrentSession", new mytest.constants.CurrentSession())
then I can just inject this Constant in my controller like this:
export class MainCtrl {
public static $inject = ["$state", "$http", "CurrentSession"];
constructor($state, $http, private CurrentSession) {
...
}
the good thing here is, that I can use the "private CurrentSession" which will automatically set the a member-variable "CurrentSession".
The html looks like this:
<button ng-click="main.logOut()">Log out {{main.CurrentSession.CURRENT_USER.Name}}</button>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With