Click sul bottone non cambia pagina

di il
3 risposte

Click sul bottone non cambia pagina

Ciao ragazzi,
ho un problema con un progetto collegato ad una database SQL. Ho una home page con un form di login. Dopo aver inserito le credenziali (username/password presenti nel DB) e aver premuto il pulsante login, il sito dovrebbe mostrare la pagina di benvenuto (ma in realtà questo non avviene). In alto però l'URL viene cambiato

index.html

<!DOCTYPE html>
  <html lang="en" >
    <head>
      <meta charset="UTF-8">
      <title>HTML Login Page with Bootstrap Example</title>
      <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css'>
      <link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Muli'>
      <link rel="stylesheet" href="./styles.css">
    </head>
    
    <body background="assets/images/teatro.png">
      <div class="pt-5">  
        <div class="container">
          <div class="row">
            <div class="col-md-5 mx-auto">
              <div class="card card-body">
                <form id="f" action="/login" data-parsley-validate="" data-parsley-errors-messages-disabled="true" novalidate="" _lpchecked="1"><input type="hidden" name="_csrf" value="7635eb83-1f95-4b32-8788-abec2724a9a4">
                  <div class="form-group required">
                    <lSabel for="username">USERNAME</lSabel>
                      <input type="text" class="form-control text-lowercase" id="username" required="" name="username" value="" placeholder="username">
                    </div>                    
                  
                    <div class="form-group required">
                      <label class="d-flex flex-row align-items-center" for="password">PASSWORD</label>
                      <a class="ml-auto border-link small-xl"></a></label>
                      <input type="password" class="form-control" required="" id="password" name="password" value="" placeholder="password">
                    </div>
                  
                    <div class="form-group pt-1">
                      <button type="submit" (click)="login(f)">Login</button>
                        <button type="submit">Sign Up</button>
                    </div>
                  </form>
                </div>
              </div>
            </div>
          </div>
        </div>  
      </body>
    </html>
admin.dashboard-component.html
Questa sotto è la pagina che dovrebbe mostrare

<div class= "container">
  <h1 style="text-align: center">Benvenuto {{user.username}}</h1>
  <p>
    Benvenuto utente
  </p>
</div>
login.component.html

<div class="pt-5">  
  <div class="container">
    <div class="row">
      <div class="col-md-5 mx-auto">
        <div class="card card-body">
          <form id="submitForm" action="/login" data-parsley-validate="" data-parsley-errors-messages-disabled="true" novalidate="" _lpchecked="1"><input type="hidden" name="_csrf" value="7635eb83-1f95-4b32-8788-abec2724a9a4">
            <div class="form-group required">
              <lSabel for="username">USERNAME</lSabel>
                <input type="text" class="form-control text-lowercase" id="username" required="" name="username" value="" placeholder="username">
              </div>                    
            
              <div class="form-group required">
                <label class="d-flex flex-row align-items-center" for="password">PASSWORD</label>
                <a class="ml-auto border-link small-xl"></a></label>
                <input type="password" class="form-control" required="" id="password" name="password" value="" placeholder="password">
              </div>
            
              <div class="form-group pt-1">
                <button type="submit" (click)="login(f)">Login</button>
                  <button type="submit">Sign Up</button>
              </div>
            </form>
          </div>
        </div>
      </div>
    </div>
  </div>  
</body>
</html>
login.component.ts

import { Component, OnInit } from '@angular/core';
import { LoginDTO } from 'src/dto/logindto';
import { NgForm } from '@angular/forms';
import { UserService } from 'src/service/user.service';
import { Router } from '@angular/router';

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {

  loginDTO: LoginDTO;

  constructor(private service: UserService, private router: Router) { }

  ngOnInit() {
  }

  login(f: NgForm): void {
    this.loginDTO = new LoginDTO(f.value.username, f.value.password);

    this.service.login(this.loginDTO).subscribe((user) => {

      if (user != null) {
        localStorage.setItem('currentUser', JSON.stringify(user));

        switch (user.usertype.toString()) {
          case 'ADMIN': {
            this.router.navigate(['/admin-dashboard']);
            break;
          }
          case 'USER': {
            this.router.navigate(['/user-dashboard']);
            break;
          }
          default:
            this.router.navigate(['/login']);
        }
      }
    });
  }
}

3 Risposte

  • Re: Click sul bottone non cambia pagina

    Stavi già affrontando lo stesso problema in questa discussione, che poi è stata abbandonata in quanto trattavasi di errore non inerente al codice postato, mentre in altri contesti la trattazione si è conclusa con un "risolto, grazie" (come questa), senza ulteriori precisazioni.

    Di certo, lo storico non invita a farsi carico di provare a dare una mano a rispondere a quesiti che poni, se la conclusione poi non porta a nulla di istruttivo.
  • Re: Click sul bottone non cambia pagina

    Se ho capito bene, mi staresti dicendo di spiegare come ho risolto? Comunque hai ragione. Si è ripresentato lo stesso problema. Ma questo è dovuto ad una causa diversa perché il database è stato aggiornato...
  • Re: Click sul bottone non cambia pagina

    Io forse sono un po' vecchio e rincoglionito…. ma nel codice che hai postato della index.html non vedo nessun app-root, ma direttamente in form di login, quindi come fa angular a renderizzare un qualsiasi componente?

    Al minimo una index.html me la aspetterei così

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>Ticket2BUI</title>
      <base href="/">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="icon" type="image/x-icon" href="favicon.ico">
    
    </head>
    <body>
      <app-root></app-root>
    </body>
    </html>
Devi accedere o registrarti per scrivere nel forum
3 risposte