2017-04-24 4 views
0

Ich versuche zu sagen, ob ein sidénav geöffnet werden soll oder nicht, basierend auf der Eigenschaft deviceWidth, die von der Komponente kommt. Aus irgendeinem Grund funktioniert es nicht. HierBrowserbreite in der Komponente prüfen, in Variable speichern und dann in der Vorlage in Angular verwenden

ist die html:

<md-sidenav #sidenav mode="side" opened="deviceWidth > 960"> 

Hier ist, was meine Komponente wie folgt aussieht:

export class AppComponent { 
    deviceWidth: any; 
    ngOnInit() { 
    this.deviceWidth = window.innerWidth; 
    } 
} 
+3

'[geöffnet] = "deviceWidth> 960"' –

+0

@ adam-beck sein Ich habe auch bemerkt, dass geöffnet =“ {{deviceWidth> 960}} funktioniert das macht Sinn? –

+0

Wenn es funktioniert, funktioniert es, denke ich. Aber ich mag keine Interpolation in meinen Argumenten. Ich würde empfehlen, die '[]' Bindesyntax zu verwenden. –

Antwort

1

falscher Weg (nicht genau falsch, aber nicht im eigentlichen Sinne),

[opened]="{{deviceWidth>960}}" 

Korrekter Weg,

[opened]="(deviceWidth>960)" 

Und vielleicht resize Funktion von window würde auch (später) erforderlich sein, wie gezeigt,

@HostListener('window:resize', ['$event']) 
    onResize(event: any) { 
    console.log(event.target.innerWidth); 
    this.deviceWidth = event.target.innerWidth; 
    } 
+0

danke für die Antwort. Können Sie erklären, wie der HostListender helfen kann? Erzählst du mir, dass ich das in meine Komponente einbauen soll? –

+0

Außerdem habe ich keinen Zugriff auf die geöffnete Direktive, die in der Angular Material-Komponente eingebaut ist, wenn Sie mir sagten, dass ich HostListener zur Direktive hinzufügen soll. Aber wenn es zu Component hinzugefügt werden kann, bitte erläutern Sie es. –

Verwandte Themen