Angular2-TypeScript: incrémenter un nombre après le délai D'attente dans AppComponent
Je veux créer une Application simple Angular2
en utilisant TypeScript
. Semble assez simple, mais je ne suis pas en mesure de réaliser ce que je voulais.
Je veux afficher une valeur de propriété dans le modèle. Et je veux mettre à jour la même chose après 1 seconde en utilisant setTimeout.
Le Code Plunkr est ici: Code sur Plunkr
Ce que j'ai écrit est ici :
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);
}
Lorsque j'utilise ce code, je reçois l'erreur suivante:
Uncaught SyntaxError: Unexpected token ;
Pourquoi je ne suis pas en mesure d'accéder n
, qui est dans le même portée que nous avions l'habitude de faire en JavaScript. Si Je ne me trompe pas, nous pouvons aussi utiliser du JavaScript pur en TypeScript.
J'ai même essayé
export class AppComponent {
public n : number = 1;
console.log(n);
}
Mais je ne peux pas voir la valeur de n
dans la console.
Quand j'ai essayé
export class AppComponent {
public n : number = 1;
console.log(this);
}
Je reçois la même erreur que ci-dessus. Pourquoi ne pouvons-nous pas accéder à cela dans cet endroit. Je suppose que this
fait référence au contexte actuel comme dans JavaScript.
Merci d'avance.
2 réponses
Ce n'est pas un code typescript valide. Vous ne pouvez pas avoir d'invocations de méthode dans le corps d'une classe.
export class AppComponent {
public n: number = 1;
setTimeout(function() {
n = n + 10;
}, 1000);
}
Déplacez plutôt l'appel setTimeout dans le constructeur de la classe.
export class AppComponent {
public n: number = 1;
constructor() {
setTimeout(() => {
this.n = this.n + 10;
}, 1000);
}
}
Aussi dans TypeScript, vous pouvez vous référer aux propriétés de classe ou aux méthodes uniquement via this .
Vous devez placer votre traitement dans le constructeur de classe ou une méthode OnInit
hook.