В настоящее время я изучаю Nativescript и хочу реализовать пример приложения Android с Angular2.Nativescript: Не могу перезаписать ActionBar в шаблоне
Когда я направляюсь к компоненту, который должен переписывать начальную страницу по умолчанию ActionBar
в шаблоне с пользовательским названием и кнопкой навигации, ничего не происходит.
Мой компонент с пользовательским ActionBar:
@Component({
template: `
<ActionBar title="CustomTitle">
<NavigationButton text="Back" android.systemIcon="ic_menu_back"></NavigationButton>
</ActionBar>
<StackLayout>
<Label text="Hello World" textWrap="true"></Label>
<page-router-outlet></page-router-outlet>
</StackLayout>
`
})
export class TestComponent {}
Название может только изменившиеся программно page.actionBar.title = "MyGoals"
, но я не хочу, что в этом случае.
Я попытался опираться на Nativescript ActionBar Doc и Sample Groceries, которые, похоже, реализуют его аналогичным образом.
Что нужно сделать по-другому, чтобы изменить ActionBar в шаблоне для Android-приложения?
Update
Когда я беру this код и отдельный TestComponent в модуле признака, то панель действий больше не работает для TestComponent - это показывает название по умолчанию.
// main.ts
import { platformNativeScriptDynamic, NativeScriptModule } from "nativescript-angular/platform";
import { NgModule, Component } from "@angular/core";
import { Routes } from "@angular/router";
import { NativeScriptRouterModule } from "nativescript-angular/router";
@Component({
template: `<page-router-outlet></page-router-outlet>`
})
export class AppComponent { }
@Component({
template: `
<ActionBar title="Home"></ActionBar>
<StackLayout>
<Label text="Home component" textWrap="true"></Label>
<Button text="test" [nsRouterLink]="['/test']"></Button>
</StackLayout>
`
})
export class HomeComponent { }
@Component({
template: `
<ActionBar title="Test"></ActionBar>
<StackLayout>
<Label text="Test component" textWrap="true"></Label>
<Button text="home" [nsRouterLink]="['/']"></Button>
</StackLayout>
`
})
export class TestComponent { }
const testRoutes: Routes = [
{
path: "test",
component: TestComponent
}
]
@NgModule({
declarations: [TestComponent],
imports: [
NativeScriptRouterModule.forChild(testRoutes)
],
})
class TestComponentModule { }
const appRoutes: Routes = [
{
path: "",
pathMatch: "full",
component: HomeComponent
}
]
@NgModule({
declarations: [AppComponent, HomeComponent],
bootstrap: [AppComponent],
imports: [
NativeScriptModule,
NativeScriptRouterModule,
NativeScriptRouterModule.forRoot(appRoutes),
TestComponentModule
],
})
class AppComponentModule { }
platformNativeScriptDynamic().bootstrapModule(AppComponentModule);
спасибо за подробный пример, ваше приложение работает и для меня. Я обновляю свой вопрос с помощью слегка скорректированной версии вашего кода. Если я отделяю TestComponent в функциональном модуле, ActionBar больше не работает ... – flexxis
Вы должны импортировать 'NativescriptModule' в свой новый функциональный модуль :). –
, который сделал трюк :). Я должен был установить NativeScriptModule и NativeScriptRouterModule в каждом функциональном модуле. – flexxis