UPDATE:
Podobnie jak @mhartington mówi:
Nie ma sposobu, aby stworzyć globalną jonowy-navbar, jak to jest wykonane w celu . Punktem zdefiniowania paska nawigacyjnego dla każdego komponentu jest to, że możemy odpowiednio animować tytuły, kolor tła paska nawigacyjnego (jeśli zmienimy je) i animować inne wymagane właściwości.
A o tworzeniu niestandardowych dyrektywy, aby uniknąć duplikowania kodu ion-navbar
HTML:
To nadal creat błędy z jak angular2 projekcja zawartości działa. Mamy kilka problemów, które zostały otwarte, kiedy ludzie próbują tego i najlepszą odpowiedzią jest nie robienie tego.
NIE zalecane rozwiązanie:
W celu uniknięcia powielania tyle kodu, można stworzyć swój własny komponent na pasku nawigacyjnym.
Tworzenie navbar.html
z tym kodem:
<ion-navbar *navbar>
<ion-title>MyApp</ion-title>
<button menuToggle="right" end>
<ion-icon name="menu"></ion-icon>
</button>
<ion-buttons *ngIf="!hideCreateButton" end>
<button (click)="createNew()"><ion-icon name="add"></ion-icon></button>
</ion-buttons>
</ion-navbar>
a następnie w navbar.ts
:
import {Component, Input} from '@angular/core';
import {NavController} from 'ionic-angular';
import {CreateNewPage} from '../../pages/create-new/create-new';
@Component({
selector: 'navbar',
templateUrl: 'build/components/navbar/navbar.html',
inputs: ['hideCreateButton']
})
export class CustomNavbar {
public hideCreateButton: string;
constructor(private nav: NavController) {
}
createNew(): void {
this.nav.setRoot(CreateNewPage, {}, { animate: true, direction: 'forward' });
}
}
zgłaszając hideCreateButton
jako input
z Component
, można zdecydować się, które strony pokazują, że w którym nie powinny być widoczne. W ten sposób można wysyłać informacje, aby poinformować komponent o tym, jaki powinien być, i dostosować go do każdej strony.
Jeśli chcesz dodać navbar na stronie (bez modyfikowania domyślnego szablonu, więc pokazując przycisk tworzenia), musisz po prostu dodać element navbar
(powiązany z naszym niestandardowym składnikiem przez nas we właściwości selector
):
<navbar></navbar>
<ion-content>
...
</ion-content>
A jeśli chcesz ukryć przycisk Utwórz (lub zmodyfikować ty NavBar jak chcesz) Twoja strona będzie wyglądać ten jeden:
<navbar [hideCreateButton]="hidebutton()"></navbar>
<ion-content>
...
</ion-content>
i pamiętaj, że hideButton()
powinny być określone w y Nasz customPage.ts
tak:
import {Component} from '@angular/core';
import {NavController} from 'ionic-angular';
import {FORM_DIRECTIVES, FormBuilder, ControlGroup, Validators, AbstractControl } from '@angular/common';
@Component({
templateUrl: 'build/pages/create-new/create-new.html',
directives: [FORM_DIRECTIVES]
})
export class CreateNewPage{
private hideCreateButton: boolean = true;
public hidebutton(): boolean {
return this.hideCreateButton;
}
}
Dobra odpowiedź - dzięki. Coś, co jest teraz osiągalne od wersji jonowej v2-beta 8 :) – keldar
'Coś, co można teraz uzyskać z wersji jonowej v2-beta. Nie można znaleźć niczego w dokumentach na ten temat. Masz link do tego? – user1275105
Tak, można przeczytać o tym, jak zagnieżdżać komponent zagnieżdżony w [ten samouczek od Angular 2 dokumentów.] (Https://angular.io/docs/ts/latest/tutorial/toh-pt3.html) – sebaferreras