2016-11-01 1 views
1

ich eine Route/main/Einzelteil haben: idAngular2 - * ngIf Route ist eine bestimmte param

, die wie etwas aussieht:

http://localhost:5000/main/item/-JJHkhfghsiu45ve 

In meinem html Ich möchte ein verwenden können * ngIst etwas anzuzeigen, wenn dies die Route ist oder nicht. Ich möchte Router Outlet dafür nicht verwenden.

Das Problem, das ich habe, könnte in Bezug auf den Param sein.

Ich tue so etwas wie:

<div *ngIf="this.router.url !== '/main/item:id'"> 

Aber das ist für mich nicht funktioniert, wie es dies sieht wie immer falsch. Danke

+0

Ich denke, man könnte verwenden '* ngIf =" router.isActive ('/ main/item', false

PS leider die Plunker ist hier mit irrelevanten Informationen gefüllt) ". Nicht getestet. –

+0

Sehen Sie sich diese Frage an => https://StackOverflow.com/questions/33520043/how-to-detect-a-route-change-in-angular-2. Speziell: http://StackOverflow.com/a/38229468/1994708 für den aktuellen Router. – flamusdiu

Antwort

2

Was ich tun würde, ist Ihre *ngIf gleich einem booleschen Wert. Verwenden Sie dann ngOnInIt oder etwas in diesen Zeilen, um den Wert dieses Bool abhängig von Ihrer URL zu ändern. Hier ist eine funktionierende plunker. HINWEIS: Konzentrieren Sie sich nur auf die Datei home.ts im Plocker. Sie können auch beweisen, dass dies funktioniert, indem Sie den Wert *ngIf wie erforderlich ändern. obwohl die wichtigen Sachen ist ...

import { Component } from '@angular/core'; 
import { Router, RouterModule } from '@angular/router'; 

@Component({ 
    template: `<h1>home</h1> <button (click)="Nav()">nav to second</button> 
    <div *ngIf="!mybool">I am only showing if my route is home!</div> 
    `, 
    styleUrls:['style.css'], 
}) 

export class HomeComponent { 
mybool:boolean; 
constructor(private router: Router,){ 
console.log(this.router.url); 
} 

ngOnInit(
    showDiv(){ 
    if(this.router.url === '/'){ 
    this.mybool=false; 
    } 
} 
) 
Verwandte Themen