Я использую стартовый шаблон ionic 2 с боковым меню.
Исходный файл app.html выглядит так:
<ion-menu [content]="content">
<ion-toolbar>
<ion-title>Menu</ion-title>
</ion-toolbar>
<ion-content>
<ion-list>
<button menuClose ion-item *ngFor="let p of pages" (click)="openPage(p)">
{{p.title}}
</button>
</ion-list>
</ion-content>
</ion-menu>
<ion-nav [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>
и я хочу заменить содержимое меню таким компонентом
<ion-menu [content]="content">
<st-menu></st-menu>
</ion-menu>
мой menu.component.ts выглядит так, который в основном скопирован из исходного файла app.ts
import {Page1} from "../pages/page1/page1";
import {Page2} from "../pages/page2/page2";
import {Nav, NavController} from "ionic-angular";
@Component({
selector: 'st-menu',
templateUrl: 'build/menu/menu.html'
})
export class MenuCmp {
@ViewChild(Nav) nav: Nav;
pages: Array<{title: string, component: any}>;
constructor(private navCtrl:NavController) {
this.pages = [
{ title: 'Home', component: HomePage },
{ title: 'Page uno', component: Page1 },
{ title: 'Page dos', component: Page2 }
];
}
openPage(page) {
this.nav.setRoot(page.component);
}
}
и menu.html вот так
<ion-toolbar>
<ion-title>Menu</ion-title>
</ion-toolbar>
<ion-list>
<button menuClose ion-item *ngFor="let p of pages" (click)="openPage(p)">
{{p.title}}
</button>
</ion-list>
Теперь, когда я нажимаю внутри меню, я получаю сообщение об ошибке:
Невозможно прочитать свойство setRoot of undefined
Я протестировал, заменив this.nav.setRoot (page.component) на this.nav.setRoot (HomePage); и он все тот же. Когда я заменяю nav на navCtrl (предоставленный и введенный), он говорит: this.navCtrl.setRoot не является функцией
Какие-либо предложения? Спасибо!