无法获取变量中的值

Unable to fetch value in a variable

home.ts 中,我在函数中获取一个值。我需要该函数外的变量中的值。

下面是 home.ts 代码:无法在 this.assignDate 中获取 estimatedServerTimeMs 的值。它给出了错误。

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) {

thisfunction(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
});

在 Typescript 中声明变量时使用 letconst 而不是使用 var.

也是一个好习惯