I created a standard nav menu. my home.html
has a slider component. this slider component can be navigated using few links that invoke the goToSlide()
method exposed using
@ViewChild(Slides) slides: Slides;
As the side navigator menu is implemented and accessible via app.component.ts
so how do i get access to slides component defined in home.ts
?
hime.html
<ion-header>
<ion-navbar no-padding>
<button ion-button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title style="background-color:#2298D3">
<ion-row><ion-col text-left>
<img (click)="goToSlide(0)" src="assets/images/white_logo_color_background.jpg" width="20%" />
</ion-col>
<ion-col text-right>
<button ion-button clear (click)="goToSlide(1)" style="color:white">Services</button>
<button ion-button clear (click)="goToSlide(2)" style="color:white">Contact Us</button>
</ion-col>
</ion-row>
</ion-title>
</ion-navbar>
</ion-header>
<ion-content no-padding>
<ion-slides direction="horizontal" speed="1000" slidesPerView="1" pager="true">
<ion-slide class="home-intro" style="background-color:#2298D3;max-height:440px">
</ion-slide>
<ion-slide padding class="site-slide" >
<ion-row>
<ion-row>
</ion-slide>
</ion-slides>
</ion-content>
home.ts
import { Component } from '@angular/core';
import { NavController, Slides } from 'ionic-angular';
import { ViewChild } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { SendEnquiryService } from '../../providers/send-enquiry.service'
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
@ViewChild(Slides) slides: Slides;
slideTwoForm: FormGroup;
constructor(public navCtrl: NavController,
public formBuilder: FormBuilder,
public enquiryService:SendEnquiryService) {
}
goToSlide(num){
this.slides.slideTo(num, 500);
}
}
app.components.ts:
import { Component, ViewChild } from '@angular/core';
import { Nav, Platform, Slides, Events } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { HomePage } from '../pages/home/home';
@Component({
templateUrl: 'app.html'
})
export class MyApp {
rootPage:any = HomePage;
@ViewChild(Nav) nav: Nav;
constructor(platform: Platform,
statusBar: StatusBar,
splashScreen: SplashScreen,
public events: Events) {
platform.ready().then(() => {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
statusBar.styleDefault();
splashScreen.hide();
this.nav.setRoot(HomePage);
});
}
goToSlide(index){
this.changeCurrentSlide(index);
}
changeCurrentSlide(index) {
this.events.publish('slider:slideTo', index);
}
}