2016-09-10 4 views
1

Ich versuche, eine strukturelle Richtlinie mit dem Beispiel gegeben erstellen hereangular2 Strukturrichtlinie mit String als Eingabe

Nur mit einer Änderung String als Eingabe hier zu passieren, habe ich als Eingabewert ‚undefined‘ beim Aufruf diese Direktive Form Markup.

@Input() set myUnless(value: String) { 
    if (value=== 'something') { 
     this.viewContainer.createEmbeddedView(this.templateRef); 
    } else { 
     this.viewContainer.clear(); 
    } 
    } 

Irgendwelche Hilfe, um dies zu erreichen?

Edit: Idee ist es, eine hasRole Richtlinie zu schaffen, das eine Rolle als String und zurück boolean auf der Grundlage akzeptieren, wenn dies im lokalen Speicher gespeichert in Rollen gefunden.

Implementierungscode lautet:

<a routerLink="/list" *unless="ADMIN"> 
      <i class="fa fa-list"></i> <span>List</span> 
</a> 

und Code für Direktive ist wie:

import { Directive, Input } from '@angular/core'; 
import { TemplateRef, ViewContainerRef } from '@angular/core'; 
@Directive({ selector: '[unless]' }) 
export class Unless { 
    constructor(
     private templateRef: TemplateRef<any>, 
     private viewContainer: ViewContainerRef 
    ) { } 
    @Input() set unless(role: String) { 
     return localStorage.getItem('roles').indexOf(role) > -1; 
    } 
} 
+1

Wie verwenden Sie es? – yurzui

+0

Bitte zeigen Sie den Code, wie Sie die Direktive verwenden. –

+0

Editiert, um Code zur Implementierung und Verwendung der Direktive hinzuzufügen. – 4rpit

Antwort

2

Die Eigenschaft ADMIN Ihrer Komponente tatsächlich undefined ;-)

Verwenden statt

ist
*unless="'ADMIN'" 
+0

Danke Lösung funktioniert :) Es war ein dummer Fehler. – 4rpit

+0

... passiert aber viel –