2017-09-06 4 views
0

Ich muss den gleichen Block auf jedem Router-Outlet-Link anzeigen. Es ist nur ein Header, aber der Titel und einige Schaltflächen werden von App-Komponente verwaltet.Angular 4 Router-Outlet Inhalt

Ich brauche im Grunde so etwas wie dies zu tun:

<router-outlet> 
    <md-toolbar (click)="someAction()"> {{ title }} </md-toolbar> 
</router-outlet> 

Und innerhalb von jedem Router-Link etwas wie folgt aus:

<ng-content></ng-content> 
<h1>This is my page</h1> 
<p>blablabla</p> 

So ist die md-Symbolleiste Tag innerhalb der Seite wäre

Antwort

0

<router-outlet> soll keinen Inhalt haben. Es ist nur ein Anker, wo der Router Komponenten hinzufügt.

Sie können eine leere Pfadroute mit einer Dummy-Komponente (show-nothing-component) verwenden, um Ihren Standardinhalt anzuzeigen, bevor der Benutzer zur Detailansicht navigiert.

0

Try es wie folgt zu ändern:

<md-toolbar (click)="someAction()"> {{ title }} </md-toolbar> 
<router-outlet></router-outlet> 

Dann wird es an der Spitze über dem gerouteten Inhalt erscheinen.

Wenn Sie einige Komponenten ohne die Symbolleiste und einige mit benötigen, benötigen Sie eine andere Zwischenkomponente.

app.component.html

<router-outlet></router-outlet> 

Weg zum Ausgang über Router, wenn Sie keine Menü oder eine Symbolleiste benötigen.

shell.component.html

<md-toolbar (click)="someAction()"> {{ title }} </md-toolbar> 
<router-outlet></router-outlet> 

Weg zum oben Router Auslass für alle Inhalte, die die Symbolleiste benötigt.

Routen Konfiguration

RouterModule.forRoot([ 
     { 
      path: '', 
      component: ShellComponent, 
      children: [ 
       { path: 'welcome', component: WelcomeComponent }, 
       { path: 'x', component: XComponent}, 
       { path: '', redirectTo: 'welcome', pathMatch: 'full' }, 
      ] 
     }, 
     { path: 'login', component: LoginComponent }, // <-- no toolbar 
     { path: '**', component: PageNotFoundComponent } // <-- no toolbar 
    ]) 
+0

Danke, ich schon getan, aber ich habe vergessen zu sagen, dass ich die Symbolleiste nur in einigen Fällen anzeigen muss, und diese Fälle sind meist mit den Seiten Inhalt verbunden. – Polo

+0

Dann müssen Sie tun, was Gunter vorgeschlagen hat. Ich habe meine Antwort aktualisiert, um ein Beispiel für das zu nennen, was er erwähnt hat. – DeborahK

0

Warum Sie es auf diese Weise zu tun, brauchen? Kannst du es nicht einfach so geben:

<md-toolbar (click)="someAction()"> {{ title }} </md-toolbar>  
<router-outlet></router-outlet> 

würde Diese Symbolleiste jedes Mal über den Router-Ausgang erzeugen sein. Sie müssen nicht verwenden <ng-content>

+0

Danke, das habe ich schon gemacht, aber ich habe vergessen zu sagen, dass ich die Symbolleiste nur in einigen Fällen anzeigen muss, und diese Fälle beziehen sich hauptsächlich auf den Seiteninhalt – Polo