Quantcast
Channel: Active questions tagged youtube-api - Stack Overflow
Viewing all articles
Browse latest Browse all 3720

Angular view not updating despite variables changed in model

$
0
0

I'm making a youtube playlist project with Gooogle OAuth, I met a little issue while handling the authentication process, the variable isAuthorized is where I store the user sign-in state, I can see in the console that it's changed to true after user sign in, but it's still false in the View section. I wonder how exactly I solve this?

below is my code for the Model section

GoogleAuth: any;user: any;isAuthorized = false; ngOnInit(): void {    // Load auth2 library    gapi.load("client:auth2", this.initClient);  }  loadClient = () => {    gapi.client.setApiKey(this.API_KEY);    return gapi.client      // same as "https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest"      .load("youtube", "v3")      .then(        () => {          console.log("GAPI client loaded for API");        },        function (err) {          console.error("Error loading GAPI client for API", err);        }      );  }  // Init API client library and set up sign in listeners  initClient = () => {    gapi.client      .init({        discoveryDocs: this.DISCOVERY_DOCS,        clientId: this.CLIENT_ID,        scope: this.SCOPES,      })      .then(() => {        this.GoogleAuth = gapi.auth2.getAuthInstance();        // Listen for sign-in state changes.        this.GoogleAuth.isSignedIn.listen(this.handleSigninStatus);        // Handle initial sign-in state. (Determine if user is already signed in.)        this.handleSigninStatus();        this.loadClient()      });  }  handleSigninStatus = () => {    this.user = this.GoogleAuth.currentUser.get();    this.isAuthorized = this.user.hasGrantedScopes(this.SCOPES);    if (this.isAuthorized) {      this.loadClient()      // this.getChannelInfo() //display playlist data    } else {      //do nothing    }  }  // Handle login  handleAuthClick = () => {    this.GoogleAuth.signIn({ scope: this.SCOPES })      .then(() => {        console.log("Sign-in successful");        // this.isLoggedIn = true        this.getChannelInfo()      },        (err: any) => { console.error("Error signing in", { err }) });  }  // Handle logout  handleSignoutClick = () => {    this.GoogleAuth.signOut();    this.GoogleAuth.disconnect();    // gapi.auth2.getAuthInstance().signOut().then(() => { this.googleUser = null });  }

and this is my HTML, aka the View section:

<mat-toolbar><a href="/">My Application {{isAuthorized}}</a><ng-template [ngIf]="isAuthorized" [ngIfElse]="loggedOut"><button mat-raised-button color="warn" id="signout-button" (click)="handleSignoutClick()">Log Out</button></ng-template><ng-template #loggedOut><button mat-raised-button color="warn" id="authorize-button" (click)="handleAuthClick()">Log In</button></ng-template></mat-toolbar>

enter image description here


Viewing all articles
Browse latest Browse all 3720

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>