{"id":1505,"date":"2016-11-14T16:48:12","date_gmt":"2016-11-14T16:48:12","guid":{"rendered":"https:\/\/ionic.io\/blog\/?p=1505"},"modified":"2016-11-14T16:48:12","modified_gmt":"2016-11-14T16:48:12","slug":"creating-slides-in-ionic-2","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2","title":{"rendered":"Creating Slides in Ionic 2"},"content":{"rendered":"<p><em>Raymond Camden is a Developer Advocate at IBM and frequently writes about Ionic on his <a href=\"https:\/\/www.raymondcamden.com\/\">blog<\/a>, where this post originally appeared.<\/em><\/p>\n<p>A little over a year ago, I wrote a post (\u201c<a href=\"https:\/\/www.raymondcamden.com\/2015\/09\/16\/ionic-example-ion-slide-box#comment-2961840425\">Ionic Example: ion-slide-box<\/a>\u201d) that demonstrated how to use the ion-slide-box component with Ionic 1. A few days ago, a reader asked if I could update that post to work with Ionic 2. I\u2019ve done that and am now going to share some of the code from the updated version.<br \/>\n<!--more--><br \/>\nIn case you don\u2019t feel like reading the previous entry, the demo was rather simple. It made use of the Bing Image Search API to fetch pictures based on your input. For context, here\u2019s an example of how it looked for Ionic 1 and iOS:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"527\" height=\"792\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png\" alt=\"image-search_cat\" class=\"aligncenter size-full wp-image-1511 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png 527w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat-200x300.png 200w\" data-sizes=\"auto, (max-width: 527px) 100vw, 527px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 527px; --smush-placeholder-aspect-ratio: 527\/792;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"527\" height=\"792\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png\" alt=\"image-search_cat\" class=\"aligncenter size-full wp-image-1511\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png 527w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat-200x300.png 200w\" sizes=\"auto, (max-width: 527px) 100vw, 527px\" \/><\/noscript><\/p>\n<p>I\u2019m beginning to think it is physically impossible for me to do a demo that doesn\u2019t involve cats. Anyway, let\u2019s talk about the Ionic 2 version. First, the view:<\/p>\n<pre><code>&lt;ion-header&gt;\n  &lt;ion-navbar&gt;\n    &lt;ion-title&gt;\n      Image Search\n    &lt;\/ion-title&gt;\n  &lt;\/ion-navbar&gt;\n&lt;\/ion-header&gt;\n\n&lt;ion-content padding&gt;\n\n  &lt;ion-item&gt;\n    &lt;ion-input type=&quot;search&quot; placeholder=&quot;Search&quot; [(ngModel)]=&quot;search&quot;&gt;&lt;\/ion-input&gt;\n  &lt;\/ion-item&gt;\n\n  &lt;button ion-button full (click)=&quot;doSearch()&quot;&gt;Search&lt;\/button&gt;\n\n  &lt;ion-slides [options]=&quot;mySlideOptions&quot;&gt;\n    &lt;ion-slide *ngFor=&quot;let slide of slides&quot;&gt;\n      &lt;img [src]=&quot;slide.MediaUrl&quot;&gt;\n    &lt;\/ion-slide&gt;\n  &lt;\/ion-slides&gt;\n\n&lt;\/ion-content&gt;\n<\/code><\/pre>\n<p>In form, it\u2019s similar to the V1 version of app, but while V1 still had a mix of HTML and Ionic components, this is nearly 100% Ionic tag-based. The only non-Ionic component there is the button tag, and even it uses an argument to flag it as being Ionic-controlled anyway. If you\u2019re still new to Angular 2 (like me!), you should pay special attention to the new syntax used for event handling: <code>(click)=&quot;doSearch()&quot;<\/code> and two way binding: <code>[(ngModel)]=&quot;search&quot;<\/code>. Another tweak is to iteration. While V1 had <code>ng-repeat<\/code>, I\u2019m using <code>*ngFor<\/code> in V2. All in all, the view here is simpler than my previous version. (But to be clear, the previous version did everything in one HTML file as it was so simple. I could have separated out the view into its own file.) Now, let\u2019s take a look at the code. First, the code for the view:<\/p>\n<pre><code>import { Component } from &#039;@angular\/core&#039;;\nimport { NavController } from &#039;ionic-angular&#039;;\nimport { ImageSearch } from &#039;..\/..\/providers\/image-search&#039;;\n\n@Component({\n  selector: &#039;page-home&#039;,\n  templateUrl: &#039;home.html&#039;,\n  providers:[ImageSearch]\n})\nexport class HomePage {\n\n  search:string;\n  slides:any[];\n  mySlideOptions = {\n    pager:true\n  };\n\n  constructor(public navCtrl: NavController, public searchProvider:ImageSearch) {\n  }\n\n  doSearch() {\n    console.log(&#039;searching for &#039;+this.search);\n    this.searchProvider.search(this.search).subscribe(data =&gt; {\n      console.log(data);\n      this.slides = data;\n    });\n  }\n\n}\n<\/code><\/pre>\n<p>There isn\u2019t anything too scary here. I\u2019ve got one method, <code>doSearch<\/code>, that simply fires off a call to my provider for Bing searches. The only real interesting part is <code>mySlideOptions<\/code>. If you want to tweak how the slide works, you can\u2019t just pass arguments via the component tag. That kinda sucks in my opinion, but I\u2019m guessing there is a good reason for that. I had tried adding <code>pager=&quot;true&quot;<\/code> to my <code>ion-slides<\/code> tag, but that didn\u2019t work. I had to create a variable and then bind to it from the view. Again, that bugs me. I can get over it, though.<\/p>\n<p>The provider is now all wrapped up in fancy Oberservables and crap, which frankly still confuse the hell out of me. But I got it working. The hardest thing was figuring out how to do headers.<\/p>\n<pre><code>import { Injectable } from &#039;@angular\/core&#039;;\nimport { Http, Headers} from &#039;@angular\/http&#039;;\nimport &#039;rxjs\/add\/operator\/map&#039;;\nimport { Observable } from &#039;rxjs\/Observable&#039;;\n\n\/*\n  Generated class for the ImageSearch provider.\n\n  See https:\/\/angular.io\/docs\/ts\/latest\/guide\/dependency-injection.html\n  for more info on providers and Angular 2 DI.\n*\/\n@Injectable()\nexport class ImageSearch {\n\n  appid = &quot;fgQ7ve\/sV\/eB3NN\/+fDK9ohhRWj1z1us4eIbidcsTBM&quot;;\n  rooturl = &quot;https:\/\/api.datamarket.azure.com\/Bing\/Search\/v1\/Image?$format=json&amp;Query=&#039;&quot;;\n\n  constructor(public http: Http) {\n    this.http = http;\n  }\n\n  search(term:string) {\n\n      let url = this.rooturl + encodeURIComponent(term) + &quot;&#039;&amp;$top=10&quot;;\n\n      let headers = new Headers();\n      headers.append(&#039;Authorization&#039;, &#039;Basic &#039;+ btoa(this.appid + &#039;:&#039; + this.appid));\n      return this.http.get(url,{headers:headers})\n        .map(res =&gt; res.json())\n        .map(data =&gt; data.d.results);\n\n  }\n\n}\n<\/code><\/pre>\n<p>And yep, that\u2019s my Bing key. I\u2019ll probably regret sharing it. So how does it look? Here\u2019s an iOS example:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"282\" height=\"500\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide1.png\" alt=\"islide1\" class=\"aligncenter size-full wp-image-1512 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide1.png 282w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide1-169x300.png 169w\" data-sizes=\"auto, (max-width: 282px) 100vw, 282px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 282px; --smush-placeholder-aspect-ratio: 282\/500;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"282\" height=\"500\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide1.png\" alt=\"islide1\" class=\"aligncenter size-full wp-image-1512\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide1.png 282w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide1-169x300.png 169w\" sizes=\"auto, (max-width: 282px) 100vw, 282px\" \/><\/noscript><\/p>\n<p>Right away, you\u2019ll notice the pager isn\u2019t actually there. I\u2019m not sure why that is failing to show up because it does show up when running ionic serve. I could definitely try to size that image a bit nicer in the view, but for a quick demo, I got over it.<\/p>\n<h3>A few minutes later\u2026<\/h3>\n<p>So I was wrapping up this blog post when I started chatting about it over on the Ionic Slack channel. <a href=\"https:\/\/twitter.com\/mhartington\">Mike<\/a> and others helped me discover a few things.<\/p>\n<p>First, you know how I complained about having to create a variable in my JS code just to handle a simple option? Turns out you can do it all in the view&#8211;thanks, Mike:<\/p>\n<pre><code>&lt;ion-slides [options]=&quot;{pager:true}&quot;&gt;\n<\/code><\/pre>\n<p>I added that and then removed the code from <code>home.ts<\/code>, making it even simpler. But I still had the bug with the pager not showing up. It clearly worked in <code>ionic serve<\/code>, see?<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"366\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide2.png\" alt=\"islide2\" class=\"aligncenter size-full wp-image-1513 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide2.png 650w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide2-300x169.png 300w\" data-sizes=\"auto, (max-width: 650px) 100vw, 650px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 650px; --smush-placeholder-aspect-ratio: 650\/366;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"366\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide2.png\" alt=\"islide2\" class=\"aligncenter size-full wp-image-1513\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide2.png 650w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide2-300x169.png 300w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/noscript><\/p>\n<p>So wtf, right? Then I remembered &#8211; Chrome DevTools has a Responsive Mode. What happens when we turn that on?<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"377\" height=\"600\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide3.png\" alt=\"islide3\" class=\"aligncenter size-full wp-image-1514 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide3.png 377w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide3-189x300.png 189w\" data-sizes=\"auto, (max-width: 377px) 100vw, 377px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 377px; --smush-placeholder-aspect-ratio: 377\/600;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"377\" height=\"600\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide3.png\" alt=\"islide3\" class=\"aligncenter size-full wp-image-1514\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide3.png 377w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide3-189x300.png 189w\" sizes=\"auto, (max-width: 377px) 100vw, 377px\" \/><\/noscript><\/p>\n<p>Boom. Right away I see the same bug\u2026 and I notice the scrollbar. I scroll down and see\u2026<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"358\" height=\"600\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide4.png\" alt=\"islide4\" class=\"aligncenter size-full wp-image-1515 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide4.png 358w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide4-179x300.png 179w\" data-sizes=\"auto, (max-width: 358px) 100vw, 358px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 358px; --smush-placeholder-aspect-ratio: 358\/600;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"358\" height=\"600\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide4.png\" alt=\"islide4\" class=\"aligncenter size-full wp-image-1515\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide4.png 358w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide4-179x300.png 179w\" sizes=\"auto, (max-width: 358px) 100vw, 358px\" \/><\/noscript><\/p>\n<p>Yep, my slides portion is just too big. On my iOS simulator, I scrolled down and confirmed. Sigh. So (and again, with help from smart folks on the Slack channel!), I ended up styling the <code>ion-slides<\/code> components:<\/p>\n<pre><code>&lt;ion-slides [options]=&quot;{pager:true}&quot; style=&quot;max-height:400px&quot;&gt;\n<\/code><\/pre>\n<p>I use a set max of 400px, which isn\u2019t terribly cross platform compatible, but it helped:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"600\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide5.png\" alt=\"islide5\" class=\"aligncenter size-full wp-image-1516 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide5.png 338w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide5-169x300.png 169w\" data-sizes=\"auto, (max-width: 338px) 100vw, 338px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 338px; --smush-placeholder-aspect-ratio: 338\/600;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"600\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide5.png\" alt=\"islide5\" class=\"aligncenter size-full wp-image-1516\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide5.png 338w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide5-169x300.png 169w\" sizes=\"auto, (max-width: 338px) 100vw, 338px\" \/><\/noscript><\/p>\n<p>Perfect! Except this is what you see on initial load:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"600\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide6.png\" alt=\"islide6\" class=\"aligncenter size-full wp-image-1517 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide6.png 338w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide6-169x300.png 169w\" data-sizes=\"auto, (max-width: 338px) 100vw, 338px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 338px; --smush-placeholder-aspect-ratio: 338\/600;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"600\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide6.png\" alt=\"islide6\" class=\"aligncenter size-full wp-image-1517\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide6.png 338w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/islide6-169x300.png 169w\" sizes=\"auto, (max-width: 338px) 100vw, 338px\" \/><\/noscript><\/p>\n<p>Ugh. So I tried going back to having options defined in JavaScript and simply changing it when data was loaded, but that didn\u2019t work. I then tried getting a pointer to the slider object and updating it that way. It also didn\u2019t work.<\/p>\n<p>Ugh again. So I went back to a simple inline option declaration but also hid the entire slider:<\/p>\n<pre><code>&lt;ion-slides [options]=&quot;{pager:true}&quot; style=&quot;max-height:400px&quot;  *ngIf=&quot;haveData&quot;&gt;\n<\/code><\/pre>\n<p>I then modified my code to default haveData:<\/p>\n<pre><code>import { Component, ViewChild } from &#039;@angular\/core&#039;;\nimport { NavController, Slides } from &#039;ionic-angular&#039;;\nimport { ImageSearch } from &#039;..\/..\/providers\/image-search&#039;;\n\n@Component({\n  selector: &#039;page-home&#039;,\n  templateUrl: &#039;home.html&#039;,\n  providers:[ImageSearch]\n})\nexport class HomePage {\n\n  search:string;\n  slides:any[];\n  haveData:boolean = false;\n\n  constructor(public navCtrl: NavController, public searchProvider:ImageSearch) {\n  }\n\n  doSearch() {\n    console.log(&#039;searching for &#039;+this.search);\n    this.searchProvider.search(this.search).subscribe(data =&gt; {\n      console.log(data);\n      if(data.length &gt;= 1) {\n        this.haveData=true;\n        this.slides = data;\n      }\n    });\n  }\n\n}\n<\/code><\/pre>\n<p>And now it works perfectly! To be fair, this still needs a nice \u201cloading\u201d widget UI when searching, but as I mainly wanted to focus on the slides, I figure I should try to keep this simple. The full source code for this demo may be found <a href=\"https:\/\/github.com\/cfjedimaster\/Cordova-Examples\/tree\/master\/ionicslidebox2\">here<\/a>.<\/p>\n<p>Let me know if you have any questions or comments below.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Raymond Camden is a Developer Advocate at IBM and frequently writes about Ionic on his blog, where this post originally appeared. A little over a year ago, I wrote a post (\u201cIonic Example: ion-slide-box\u201d) that demonstrated how to use the ion-slide-box component with Ionic 1. A few days ago, a reader asked if I could [&hellip;]<\/p>\n","protected":false},"author":31,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"","publish_post_category":"","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"","discourse_permalink":"","wpdc_publishing_response":"","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[3,13],"class_list":["post-1505","post","type-post","status-publish","format-standard","hentry","category-all","tag-ionic","tag-ionic-2"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Creating Slides in Ionic 2 - Ionic Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creating Slides in Ionic 2\" \/>\n<meta property=\"og:description\" content=\"Raymond Camden is a Developer Advocate at IBM and frequently writes about Ionic on his blog, where this post originally appeared. A little over a year ago, I wrote a post (\u201cIonic Example: ion-slide-box\u201d) that demonstrated how to use the ion-slide-box component with Ionic 1. A few days ago, a reader asked if I could [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-11-14T16:48:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png\" \/>\n<meta name=\"author\" content=\"Raymond Camden\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@raymondcamden\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Raymond Camden\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2\"},\"author\":{\"name\":\"Raymond Camden\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/c5161ffcc855ece520266a174a1b828d\"},\"headline\":\"Creating Slides in Ionic 2\",\"datePublished\":\"2016-11-14T16:48:12+00:00\",\"dateModified\":\"2016-11-14T16:48:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2\"},\"wordCount\":847,\"commentCount\":41,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png\",\"keywords\":[\"Ionic\",\"Ionic 2\"],\"articleSection\":[\"All\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2\",\"url\":\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2\",\"name\":\"Creating Slides in Ionic 2 - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png\",\"datePublished\":\"2016-11-14T16:48:12+00:00\",\"dateModified\":\"2016-11-14T16:48:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png\",\"width\":527,\"height\":792},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Creating Slides in Ionic 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ionic.io\/blog\/#website\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"name\":\"ionic.io\/blog\",\"description\":\"Build amazing native and progressive web apps with the web\",\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ionic.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ionic.io\/blog\/#organization\",\"name\":\"Ionic\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"width\":1920,\"height\":854,\"caption\":\"Ionic\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/ionicframework\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/c5161ffcc855ece520266a174a1b828d\",\"name\":\"Raymond Camden\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8edd6261c5f044afb27913bddf7760af0e47b56a2a617b7bcc815836beba0ba8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8edd6261c5f044afb27913bddf7760af0e47b56a2a617b7bcc815836beba0ba8?s=96&d=mm&r=g\",\"caption\":\"Raymond Camden\"},\"sameAs\":[\"http:\/\/www.raymondcamden.com\",\"https:\/\/x.com\/raymondcamden\"],\"url\":\"https:\/\/ionic.io\/blog\/author\/ray\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Creating Slides in Ionic 2 - Ionic Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2","og_locale":"en_US","og_type":"article","og_title":"Creating Slides in Ionic 2","og_description":"Raymond Camden is a Developer Advocate at IBM and frequently writes about Ionic on his blog, where this post originally appeared. A little over a year ago, I wrote a post (\u201cIonic Example: ion-slide-box\u201d) that demonstrated how to use the ion-slide-box component with Ionic 1. A few days ago, a reader asked if I could [&hellip;]","og_url":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2","og_site_name":"Ionic Blog","article_published_time":"2016-11-14T16:48:12+00:00","og_image":[{"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png"}],"author":"Raymond Camden","twitter_card":"summary_large_image","twitter_creator":"@raymondcamden","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Raymond Camden","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2"},"author":{"name":"Raymond Camden","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/c5161ffcc855ece520266a174a1b828d"},"headline":"Creating Slides in Ionic 2","datePublished":"2016-11-14T16:48:12+00:00","dateModified":"2016-11-14T16:48:12+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2"},"wordCount":847,"commentCount":41,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png","keywords":["Ionic","Ionic 2"],"articleSection":["All"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2","url":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2","name":"Creating Slides in Ionic 2 - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png","datePublished":"2016-11-14T16:48:12+00:00","dateModified":"2016-11-14T16:48:12+00:00","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2016\/11\/Image-Search_cat.png","width":527,"height":792},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/creating-slides-in-ionic-2#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Creating Slides in Ionic 2"}]},{"@type":"WebSite","@id":"https:\/\/ionic.io\/blog\/#website","url":"https:\/\/ionic.io\/blog\/","name":"ionic.io\/blog","description":"Build amazing native and progressive web apps with the web","publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ionic.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ionic.io\/blog\/#organization","name":"Ionic","url":"https:\/\/ionic.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","width":1920,"height":854,"caption":"Ionic"},"image":{"@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ionicframework"]},{"@type":"Person","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/c5161ffcc855ece520266a174a1b828d","name":"Raymond Camden","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8edd6261c5f044afb27913bddf7760af0e47b56a2a617b7bcc815836beba0ba8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8edd6261c5f044afb27913bddf7760af0e47b56a2a617b7bcc815836beba0ba8?s=96&d=mm&r=g","caption":"Raymond Camden"},"sameAs":["http:\/\/www.raymondcamden.com","https:\/\/x.com\/raymondcamden"],"url":"https:\/\/ionic.io\/blog\/author\/ray"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/1505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/users\/31"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=1505"}],"version-history":[{"count":0,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/1505\/revisions"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=1505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=1505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=1505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}