ich einige Daten zwischen zwei meiner Komponenten zu teilen habe versucht. Die Komponenten sind sowohl in meiner Hauptkomponente durch die routerOutlet gezeigt, die wie folgt aussieht:Service Mit den Daten zwischen den Komponenten zu teilen
import { Component } from '@angular/core';
import { AccountService } from './account.service';
@Component({
moduleId: module.id,
selector: 'my-app',
templateUrl: 'app.component.html',
providers: [AccountService]
})
export class AppComponent {
constructor(public accountService:AccountService){
}
}
Ich habe eine Login-Komponente, wo ich versuche, einen Wert in meinem Dienst zu setzen, wie folgt aus:
import { Component } from '@angular/core';
import { AccountService } from './account.service';
@Component({
moduleId: module.id,
selector: 'login-component',
templateUrl: 'login.component.html',
})
export class LoginComponent {
constructor(public accountService:AccountService){
}
setAccount(userName: string, password: string){
this.accountService.setAccount(userName,password);
}
}
Die setAccount Methode wird von meiner Vorlage aufgerufen. Jetzt, in einer anderen Komponente, versuche ich, das Konto aus dem Dienst zu bekommen und den Benutzernamen anzuzeigen, was nicht funktioniert. Die anderen Komponenten wie folgt aussehen:
import { Component } from '@angular/core';
import { AccountService } from './account.service';
@Component({
moduleId: module.id,
selector: 'home-component',
templateUrl: 'home.component.html',
})
export class HomeComponent {
constructor(public accountService:AccountService){
}
}
ich die Benutzername wie dies in der Vorlage bin Anzeige:
{{accountService.getAccount().name}}
Schließlich ist hier, mein Service:
import { Injectable } from '@angular/core';
export class Account{
name: string;
password: string;
}
@Injectable()
export class AccountService {
private account = {name: "", password: ""};
getAccount(){
return this.account;
}
setAccount(username: string, password: string){
this.account.name = username;
this.account.password = password;
}
}
Was soll ich tun falsch?
EDIT: Es scheint, dass das Problem ist, dass die Seite neu geladen wird, wenn die zweite Komponente angezeigt wird, was bewirkt, dass dieser Dienst neu zu starten? Hier ist der HTML-Code Anmeldungskomponente, wie ich das Problem vermuten könnte sich hier ein:
<div class="topbar">
<a title="Made for the University of Southern Denmark." href="login.html">
<img src="img/sdulogo.png">
</a>
</div>
<div class="logincontainer">
<img src="img/profilepic.png">
<form action="/home">
<div class="form-input">
<input #username type="text" id="username"
placeholder="Enter Username" required>
</div>
<div class="form-input">
<input #password type="password" id="password"
placeholder="Enter Password" required>
</div>
<button (click)="setAccount(username.value, password.value)" type="submit" class="btn-login">LOGIN</button><br>
<a href="http://www.google.dk">Create Account</a><br>
<a href="#">Forgot Password?</a>
<p>{{accountService.getAccount().name}}</p>
</form>
</div>
Sehen Sie irgendwelche Fehlermeldungen in der Konsole? Wenn ja, füge sie bitte zu deiner Frage hinzu. –
Keine Fehlermeldungen überhaupt. – Jesper
Was ist die Reihenfolge der Aktionen, die Sie als Benutzer Ihrer Anwendung ausführen, um von der Anmeldeseite auf die Startseite zu gelangen? Ich schätze, dass Sie die Seite neu laden. –