2016-06-26 3 views
1

Lets sagen, ich habe Startseite, Über und Erweiterte Suche Seiten. In meinem AppComponent html Ich habe diese:Angular 2 - Toggle Richtlinie Komponente auf Seite je

<view-header></view-header> 
<view-search></view-search> 
<router-outlet></router-outlet> 
<view-footer></view-footer> 

Ganz einfach. Zuerst lade ich den HTML-Header meines Headers und dann den HTML-Code meiner Standard-Suche und dann weiter und weiter.

Wie ich bereits sagte, habe ich die Seite Suche. Offensichtlich möchte ich meine Anweisung view-search nicht zeigen, weil es ziemlich nutzlos ist, wenn Sie in der Erweiterte Suche Seite sind.

Also meine Frage ist, wie kann ich Angular2 sagen, um die View-Search-Direktive zu deaktivieren, wenn ich zu meiner Erweiterte Suche Seite route?


Edit 1

Mit anderen Worten, ich möchte so etwas tun:

<view-header></view-header> 

<!-- If (not in route "/search") --> 
    <view-search></view-search> 
<!-- Endif --> 

<router-outlet></router-outlet> 
<view-footer></view-footer> 
+0

Verwenden Sie 'route.subscribe', um nach der aktuellen aktiven Route zu suchen. – AngJobs

+0

@AngJobs Vielen Dank für Ihre Antwort, noch nie davon gehört. Ich werde das überprüfen. –

+0

Keine probs, es ist in offiziellen docs https://angular.io/docs/ts/latest/guide/router.html – AngJobs

Antwort

0

Sie einfach ngIf (oder binden an [hidden]) in der Vorlage verwenden können:

<view-header></view-header> 
<view-search *ngIf="showViewSearch"></view-search> 
<router-outlet></router-outlet> 
<view-footer></view-footer> 
<router-outlet></router-outlet> 

Wo Sie würde definieren showViewSearch als

constructor(private activatedRoute: ActivatedRoute) { 
    this.showViewSearch = activatedRoute.component !== Search 
} 

So viewSearch Komponente nur gemacht wird, wenn die aktuelle Routensuche nicht.

+0

Vielen Dank für Ihre Hilfe, ich habe versucht, wie Sie erwähnt, aber ich habe nicht in meinem ganzen Projekt gefunden die Klasse 'ActivatedRoute'. Vielleicht ist es in einer anderen Version? Meine Version ist - 'angular-cli: 1.0.0-beta.2-mobile.4' –

+0

Welche Version des Routers verwenden Sie? ActivatedRoute wird von '@ angular/route' der Version 3.x exportiert. – dfsq

+0

"@ Angular/Router": "2.0.0-rc.1". Sollte ich es auf 3.x upgraden? –