Невозможно получить значение в переменной - PullRequest
0 голосов
/ 22 марта 2020

В home.ts я получаю одно значение в функции. Мне нужно это значение в переменной за пределами этой функции.

Ниже home.ts код: невозможно получить значение estimatedServerTimeMs в this.assignDate. Выдает ошибку.

assignDate;
ngOnInit() { 
      let epoch = firebase.database.ServerValue.TIMESTAMP;
      var offsetRef = firebase.database().ref(".info/serverTimeOffset");
      offsetRef.on("value", function(snap) {
      var offset = snap.val();
      var estimatedServerTimeMs = new Date().getTime() + offset;

      console.log(estimatedServerTimeMs); // enoch numeric string

      this.assignDate = estimatedServerTimeMs; // This is giving error
    });

}

Вот ошибка:

annot set property 'assignDate' of null
    at crud2.page.ts:60
    at index.cjs.js:4551
    at exceptionGuard (index.cjs.js:700)
    at EventList.push../node_modules/@firebase/database/dist/index.cjs.js.EventList.raise (index.cjs.js:9624)
    at EventQueue.push../node_modules/@firebase/database/dist/index.cjs.js.EventQueue.raiseQueuedEventsMatchingPredicate_ (index.cjs.js:9578)
    at EventQueue.push../node_modules/@firebase/database/dist/index.cjs.js.EventQueue.raiseEventsForChangedPath (index.cjs.js:9562)
    at Repo.push../node_modules/@firebase/database/dist/index.cjs.js.Repo.updateInfo_ (index.cjs.js:12698)
    at index.cjs.js:12690
    at each (index.cjs.js:556)
    at Repo.push../node_modules/@firebase/database/dist/index.cjs.js.Repo.onServerInfoUpdate_ (index.cjs.js:12689)

Проблема в том, что я не могу извлечь значение из этой функции offsetRef.on("value", function(snap) {

1 Ответ

2 голосов
/ 22 марта 2020

Область действия this в function(snap) обозначает функцию. Замените его функцией стрелки для использования переменных-членов.

offsetRef.on("value", (snap) => {
  const offset = snap.val();
  const estimatedServerTimeMs = new Date().getTime() + offset;

  console.log(estimatedServerTimeMs); // enoch numeric string

  this.assignDate = estimatedServerTimeMs; // This is giving error
});

Также рекомендуется использовать let или const при объявлении переменных в Typescript вместо использования var.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...