I want to create a simple Angular2 Application using TypeScript. Seems, pretty simple, but I am not able to achieve what I wanted to.
I want to show a property value in the template. And I want to update the same after 1 second using setTimeout.
Plunkr Code is here : Code on Plunkr
What I wrote is here :
import {Component} from 'angular2/core'; interface Hero { id: number; name: string; } @Component({ selector: 'my-app', template:`<h1>Number Increment</h1><p>{{n}}</p>` }) export class AppComponent { public n : number = 1; setTimeout(function() { n = n + 10; }, 1000); } When I use this code I am getting following error :
Uncaught SyntaxError: Unexpected token ; Why I am not able to access n, which is in the same scope as we used to do in JavaScript. If I am not wrong, we can use pure JavaScript too in TypeScript.
I even tried
export class AppComponent { public n : number = 1; console.log(n); } But I am not able to see the value of n in the console.
When I tried
export class AppComponent { public n : number = 1; console.log(this); } I am getting same error as above. Why cant we access this in this place. I guess, this refers to the current context as in JavaScript.
Thanks in advance.
This is not valid TypeScript code. You can not have method invocations in the body of a class.
// INVALID CODE export class AppComponent { public n: number = 1; setTimeout(function() { n = n + 10; }, 1000); } Instead move the setTimeout call to the constructor of the class. Additionally, use the arrow function => to gain access to this.
export class AppComponent { public n: number = 1; constructor() { setTimeout(() => { this.n = this.n + 10; }, 1000); } } In TypeScript, you can only refer to class properties or methods via this. That's why the arrow function => is important.
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