TypeScript
を使用して簡単にAngular2
アプリケーションを作成したいと思います。かなりシンプルだが、私が望むものを達成することはできない。Angular2 - TypeScript:AppComponentでタイムアウト後に数値をインクリメントする
テンプレートにプロパティ値を表示したいとします。そして、setTimeoutを使って1秒後に同じものを更新したいと思います。
Plunkrコードはここにある:Code on Plunkr
私が書いたものはここにある:私はことはできませんよ、なぜ
Uncaught SyntaxError: Unexpected token ;
:私はこのコードを使用すると
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);
}
私は、次のエラーを取得していますn
にアクセスします。これはJavaScriptで使用したのと同じスコープです。私が間違っていなければ、TypeScriptでも純粋なJavaScriptを使うことができます。
私も
export class AppComponent {
public n : number = 1;
console.log(n);
}
を試してみました。しかし、私は、コンソールにn
の値を見ることができないです。
私は
export class AppComponent {
public n : number = 1;
console.log(this);
}
を試したとき、私は上記と同じエラーを取得しています。なぜ私たちはこの場所でこれにアクセスできないのですか?私は、this
はJavaScriptのように現在のコンテキストを参照していると思います。
ありがとうございます。
ありがとう@toskvそれは働いた。実際には、 'setTimeout'関数内で' this'リファレンスが動作しませんでした。そのためには、[更新されたPlunkrコード](http://plnkr.co/edit/RhYhVS84wnOdPuhYUG1E?p=preview)にあるように 'that'と' this'を使用しなければなりませんでした。 – Mahisha
arrowの関数を使うべきです。これらのキーワードは、別の変数に格納することなく***キーワードを使用することができます。 (例: 'setTimeout(()=> {this.n + = 10;}、1000); – Romain
これはsetTimeoutでもうまく動作するように、矢印関数を使用するように答えを更新しました:) – toskv