2017-12-18 4 views
0

Ich bin neu in der Programmierung mit Typoskript und eckig. Ich schreibe meine erste Komponente und erkenne ein wirklich seltsames Verhalten. Wenn ich etwas in das Eingabeformular schreibe, verbreitet es die Zeichen zwischen den Browsern, wenn ich zwei Fenster geöffnet habe. Es scheint, dass jede Sitzung nur eine Komponente teilt?Angular 2/Typescript Scope

@Component({ 
selector: 'login', 
providers: [AuthService], 
template: ` 
    <div class="container my_container"> 
     <div class="row"> 
      <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4"></div> 
      <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4 my_login"> 
       <h1 class="my_h1">Login </h1> 
       <div class="form-group"> 
        <input type="text" placeholder="E-Mail" class="form-control" [(ngModel)]="admin.email" 
          name="email"> 
       </div> 
       <div class="form-group"> 
        <input type="password" placeholder="Password" class="form-control" [(ngModel)]="admin.password" 
          name="password"> 
       </div> 
       <button (click)="login()" type="button" class="btn btn-lg btn-primary btn-block">Sign in</button> 
      </div> 
      <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4"></div> 
     </div> 
    </div> 

`}) 

export class LoginComponent implements OnInit { 
admin: Admin; 
returnUrl: string; 

constructor(private route: ActivatedRoute, 
      private router: Router, 
      private authService: AuthService) { 
} 

ngOnInit(): void { 
    document.getElementById('myNavbar').style.display = "none"; 
    this.admin = new Admin("",""); 
    this.authService.logout(); 
    this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/'; 
} 

login() { 
    if (this.admin.email != "" && this.admin.password != "") { 
     if (this.authService.login(this.admin.email, this.admin.password)) { 
      document.getElementById('myNavbar').style.display = "block"; 
      this.router.navigate([this.returnUrl]); 
     } else { 
      alert("Wrong username or password!"); 
     } 
    } else { 
     alert("Fill username and password") 
    } 
}} 

Kann jemand bitte erklären, wie man dieses Verhalten vermeidet?

Dank jerryp

+0

Was bedeutet dieser AuthService? Wenn Sie Sachen auf localstorage halten und dann ein geklontes Fenster öffnen Es vererbt wahrscheinlich diese Daten von der Elternkarte/-fenster – Fals

+0

Es breitet sich zwischen Browsern aus? Du meinst Chrome und Firefox? Oder zwischen Fenstern? Haben Sie es mit dem Inkognito-Modus versucht? Als Empfehlung. Versuchen Sie, 2-Wege-Datenbindung zu vermeiden: [(ngModel)], reaktive Formulare sind eine großartige Möglichkeit, Formulare zu verwalten, können Sie das Formular mit einer beobachtbaren für das Formular oder für jede Eingabe, die Sie benötigen (mit valueChanges) abonnieren. Vermeiden Sie document.getElementById ('myNavbar') ... winkel hat andere Möglichkeiten, das zu verwalten. – perseus

Antwort

0

Vielen Dank für die Beratung. Es war BrowserSync in GhostMode, die alle Aktionen über die Browser spiegeln. Setzen Sie "ghostMode": false in der bs-config.json, um dieses Problem zu lösen.