Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase+;js(角度)离开窗口时更改联机状态_Javascript_Angular_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript Firebase+;js(角度)离开窗口时更改联机状态

Javascript Firebase+;js(角度)离开窗口时更改联机状态,javascript,angular,firebase,firebase-realtime-database,Javascript,Angular,Firebase,Firebase Realtime Database,嘿,我正在尝试为我的web应用程序(angular 5+firebase)的每个用户建立属性stateOnline。 我在Android上看到的东西很少,我试图为自己实现一些东西: signInUser(email: string, password: string) { return new Promise( (resolve, reject) => { firebase.auth().signInWithEmailAndPassword(emai

嘿,我正在尝试为我的web应用程序(angular 5+firebase)的每个用户建立属性stateOnline。 我在Android上看到的东西很少,我试图为自己实现一些东西:

  signInUser(email: string, password: string) {
    return new Promise(
      (resolve, reject) => {
        firebase.auth().signInWithEmailAndPassword(email, password).then(
          () => {
            this.setOnlineState(true);
            resolve();
          },
          (error) => {
            reject(error);
          }
        );
      }
    );
  }

  signOutUser() {
    this.setOnlineState(false);
    firebase.auth().signOut();
  }

  setOnlineState(state: boolean) {
    const currentUser = firebase.auth().currentUser;
    firebase.database().ref("users/" + currentUser.uid).update({ onlineState: state });
  }

当用户单击调用signIn和signOut的按钮时工作正常,但是如果他没有单击signOut就离开页面,onlineState将保持为true!如何更正此问题?

使用onbeforeunload事件:

HTML:


在卸载前使用on事件:

HTML:


我使用它有一个问题。当页面刷新时,它将注销用户!我使用它有一个问题。当页面刷新时,它将注销用户!
<div (window:beforeunload)="doSignOff()"></div>
  doSignOff(){
    this.setOnlineState(false);

    //If you want to make sign out.
    firebase.auth().signOut();
  }