angular - Nativescript:无法覆盖模板中的 ActionBar

标签 angular nativescript angular2-nativescript

我目前正在学习 Nativescript,并希望使用 Angular2 实现一个示例 Android 应用程序。

当我路由到一个组件,该组件将使用自定义标题和导航按钮覆盖模板中默认可见的起始页 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 DocSample Groceries ,它们似乎以类似的方式实现它。

必须采取哪些不同措施才能更改 Android 应用模板中的 ActionBar?


更新

当我使用 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);

最佳答案

那里! 您的配置似乎有效。虽然,<page-router-outlet>标签在 TestComponent 中没有意义。这是一个简单的原生脚本 Angular 应用程序,它可以正确更新操作栏:

// 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 routes: Routes = [
    {
        path: "",
        pathMatch: "full",
        component: HomeComponent
    },
    {
        path: "test",
        component: TestComponent
    }
]

@NgModule({
    declarations: [ AppComponent, HomeComponent, TestComponent ],
    bootstrap: [ AppComponent ],
    imports: [
        NativeScriptModule,
        NativeScriptRouterModule,
        NativeScriptRouterModule.forRoot(routes)
    ],
})
class AppComponentModule {}

platformNativeScriptDynamic().bootstrapModule(AppComponentModule);

关于angular - Nativescript:无法覆盖模板中的 ActionBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40258855/

相关文章:

android - NativeScript - 无法将请求的类放在单个 dex 文件中

javascript - 如何拒绝 NativeScript 上的 promise - Angular 2

angular - lint-staged in Angular monorepo

angular - 通过管道传输到我的自定义过滤器中的对象数组始终显示为零长度

json - 使用 Electron 在 Angular 5 中访问文件系统

javascript - Nativescript Google map - 更改折线颜色

javascript - NativeScript 中的自定义对话框

javascript - 如何默认将 NativeScript 设置为 RTL 布局

android - ANDROID_HOME 环境变量未设置或指向 Ubuntu 中不存在的目录

cordova - Ionic 2 - 仅为 iPad 启用横向