【发布时间】:2020-12-28 08:49:01
【问题描述】:
我的 ionic 5 应用有一个侧边菜单和标签。每个页面的侧边菜单和选项卡可以有不同的内容。我不想在每个页面中复制 ion-menu,所以我创建了一个像这样的标题组件(我也为选项卡做了一个):
标题组件:
<ion-menu contentId="content">
<ion-header>
<ion-toolbar color="primary">
<ion-buttons slot="start">
<ion-menu-button></ion-menu-button>
</ion-buttons>
<ion-title>{{pageObj.title}}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-menu-toggle auto-hide="false" *ngFor="let page of pageObj.pages">
<ion-item [routerLink]="page.url" routerDirection="root" [class.active-item]="selectedPath.startWith(page.url)">
<ion-icon>{{page.icon}}</ion-icon>
<ion-label>
{{page.title}}
</ion-label>
</ion-item>
</ion-menu-toggle>
</ion-list>
</ion-content>
</ion-menu>
现在我在 app.component.html 中使用这个头组件,如下所示:
<ion-app>
<ion-split-pane>
<app-header></app-header>
<ion-router-outlet id="content"></ion-router-outlet>
</ion-split-pane>
</ion-app>
还有 app.component.ts:
...........
.........
export class AppComponent {
pageObj: any = '';
selectedPath = '';
pages = [
{
title: 'Become a Member',
url: '/pages/membership'
},
{
title: 'Make a Posts',
url: '/pages/posts'
}
]
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private router: Router
) {
this.initializeApp();
this.pageObj.title = 'Menu';
this.pageObj.pages = this.pages;
this.router.events.subscribe((event:RouterEvent) => {
if (event && event.url) {
this.selectedPath = event.url;
}
})
}
.........
........
所以问题是需要 app.component.ts 中存在的变量(pageObg)。我不确定如何传递这些变量?我相信我可以这样做:
<app-header [pageObj]="pageObj"><app-header>
但我不确定这是如何工作的!有没有更好的方法来实现我想要做的事情?
【问题讨论】:
标签: html angular ionic-framework