2016-06-01 9 views
1

Ich versuche, eine Login-Komponente für meine Anwendung in Angular 2 Version RC-1 zu codieren. Aber ich habe nicht gefunden, wie ich mein modales ohne eine Tastenaktion öffne.wie Authentifizierung öffnen Popup oder modal in Angular 2

Wenn ich meine App lade, überprüfe ich, ob der Benutzer eingeloggt ist oder nicht (mit dem localStorage): Wenn er nicht eingeloggt ist, musste das Login Modal geöffnet werden.

So öffnen/schließen modal ist durch einen booleschen Parameter und nicht eine Aktion Schaltfläche konditioniert.

Wissen Sie, wie ich ein Login-Modal ohne eine Tastenaktion öffnen kann?

Vielen Dank im Voraus,

+0

Ist es die modale Bootstrap-Komponente? – rinukkusu

+0

Sie können 'ngIf' im modalen Div verwenden, um das gesamte div anzuzeigen/auszublenden. – nu11p01n73R

+0

Ich benutze Bootstrap Modal und Primeng Modal, aber beide erfüllen meine Bedürfnisse nicht. Meine Login-Komponente ist eine unabhängige Komponente, also habe ich sie in die App-Komponente importiert! Ich habe versucht, 'ngIf' zu verwenden, funktioniert aber außer dem Parameter nicht als' true'? – youza

Antwort

1

Können sagen, Sie eine Komponente, die Ihre modal hält.

export class YourModalComponent { 
    constructor() {} 

    public open(): void { 
    //show modal 
    } 
} 

Und dann haben Sie eine Komponente, die den lokalen Speicher überprüft und hat YourModalComponent als Kinder. Wenn der Benutzer eingeloggt ist, rufen Sie einfach modal.open() an.

export class YourParentComponent { 
    @ViewChild(YourModalComponent) 
    public yourModal : YourModalComponent; 

    constructor() {} 

    public ngAfterViewInit(): void { 
    //check if user is logged in 
    if(!userIsLoggedIn) { 
     this.yourModal.open(); 
    } 

    } 
} 

Sie können auch haben die div mit ngIf Anzeige so der YourModalComponent wird nur angezeigt, wenn die Bedingung erfüllt ist.

+0

Ich benutze diese Lösung. Wir sind nahe am Ziel, aber ich habe diese Ausnahme: 'EXCEPTION: TypeError: Kann die Eigenschaft 'open' von undefined nicht lesen! Wenn ich die Bedingung auf "userIsLoggedIn" entferne, ist es Arbeit: das Modal ist offen! – youza

+0

Wie überprüfen Sie, ob der Benutzer angemeldet ist? –

+0

'export Klasse AppComponent implementiert OnInit { @ViewChild (LoginComponent) modal: LoginComponent; isLoggedIn: boolean = false; Konstruktor (private auth: AuthentificationService) { this.isLoggedIn = this.auth.isLoggedin(); console.log (dies); } öffentliche ngOnInit(): void { // überprüfen, ob Benutzer in if (! This.isLoggedIn) angemeldet ist { this.open(); } } schließen() { this.modal.close(); } open() { this.modal.open(); } } ' – youza