0

Angular 2 で非常に基本的なサービスをセットアップしようとしています。目標は、ユーザーがボタンをクリックしたときに現在の日付と時刻を表示することです。以下のコードを使用すると、次のエラーが発生します。

Error during evaluation of "click" ORIGINAL EXCEPTION: TypeError: l_context.whatTime is not a function

時間コンポーネント:

@Component({
    template: `
      <h1>Time Test</h1>
      <button (click) = "whatTime()">Time</button>
      <h2>{{now}}</h2>
         `
})

    export class TimeComponent {
      now = Date();
      constructor(public timeService: TimeService) {
        this.now = timeService.whatTime();
    }
}

サービス:

@Injectable()
    export class TimeService {

      whatTime() {
      return new Date();
    }
}

私が間違っていることについて何か考えはありますか?

4

2 に答える 2

5

代わりにこれを使用してください

プランカー

<button (click) = "now = timeService.whatTime()">Time</button>

ただし、devmode エラーが発生する可能性があります。

より良い方法はObservable、定義済みの間隔で時間の変更について通知するサービスにを追加することです

@Injectable()
export class TimeService {

  constructor() {
    this.whatTime = Observable.interval(1000).map(x => new Date()).share();
  }
}
<!-- <button (click) = "whatTime()">Time</button> -->
  <h2>{{timeService?.whatTime | async}}</h2>
于 2016-03-12T20:57:41.747 に答える