{"id":700,"date":"2018-02-27T18:59:27","date_gmt":"2018-02-27T17:59:27","guid":{"rendered":"https:\/\/www.lagencebleu.com\/gaelcorna\/?p=700"},"modified":"2018-02-28T10:28:41","modified_gmt":"2018-02-28T09:28:41","slug":"theme-wordpress-ionic-1-8-component-post","status":"publish","type":"post","link":"https:\/\/www.lagencebleu.com\/gaelcorna\/single\/700\/theme-wordpress-ionic-1-8-component-post","title":{"rendered":"Un th\u00e8me WordPress en Ionic 3\/8 &#8211; Le component Post"},"content":{"rendered":"<h3>le component de base<\/h3>\n<p>Le component Post est le composant de base de notre d\u00e9veloppement puisque c&rsquo;est l&rsquo;unit\u00e9 d&rsquo;information qui sera demand\u00e9e au serveur. Partons du code g\u00e9n\u00e9r\u00e9 par Ionic : <\/p>\n<p><code class=\"hljs typescript\">import { Component } from &#039;@angular\/core&#039;;<br \/>\n\/**<br \/>\n&nbsp;* Generated class for the PostComponent component.<br \/>\n&nbsp;*<br \/>\n&nbsp;* See https:\/\/angular.io\/api\/core\/Component for more info on Angular<br \/>\n&nbsp;* Components.<br \/>\n&nbsp;*\/<br \/>\n@Component({<br \/>\n&nbsp;&nbsp;selector: &#039;post&#039;,<br \/>\n&nbsp;&nbsp;templateUrl: &#039;post.html&#039;<br \/>\n})<br \/>\nexport class PostComponent {<br \/>\n&nbsp;&nbsp;text: string;<br \/>\n&nbsp;&nbsp;constructor() {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;console.log(&#039;Hello PostComponent Component&#039;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;this.text = &#039;Hello World&#039;;<br \/>\n&nbsp;&nbsp;}<br \/>\n}<br \/>\n<\/code><\/p>\n<p>nous allons d\u00e9j\u00e0 ajouter \u00e0 notre class une interface \u00e0 laquelle elle doit r\u00e9pondre puisque nous allons utiliser une fonction du cycle de vie du component. Cette fonction sera appel\u00e9e \u00e0 l&rsquo;initialisation du component et s&rsquo;appelle donc <em>ngOnInit<\/em>. Modifions notre code d&rsquo;import en cons\u00e9quence :<br \/>\n<code class=\"hljs typescript\">import { Component, OnInit, Input } from &#039;@angular\/core&#039;;<\/code><\/p>\n<p>Puis impl\u00e9mentons l&rsquo;interface : <\/p>\n<p><code class=\"hljs typescript\">export class Post implements OnInit {<\/code><\/p>\n<p>L&rsquo;ajout de <em>implements<\/em> \u00e0 notre class indique quelle se conformera bien \u00e0 la d\u00e9finition de l&rsquo;interface. Pour que cela soit bien le cas, il nous faut ajouter la m\u00e9thode ad\u00e9quate dans le corps de la class.<\/p>\n<p><code class=\"hljs typescript\">ngOnInit() {<br \/>\n&nbsp;&nbsp;this.getSinglePost();<br \/>\n}<\/code><\/p>\n<p>Nous appellerons donc la m\u00e9thode <em>getSinglePost<\/em> \u00e0 chaque initialisation du component. Voyons donc cette m\u00e9thode qui r\u00e9cup\u00e9rera le contenu du post.<\/p>\n<h3>R\u00e9cup\u00e9rons un Post<\/h3>\n<p><code class=\"hljs typescript\">getSinglePost() {<br \/>\n&nbsp;&nbsp;this.postService<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;.getPost( this.SinglePostId, &#039;posts&#039; )<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;.subscribe(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res =&gt; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.post = res;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error =&gt; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.error = error;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;);<br \/>\n    }<\/code><\/p>\n<p>Cette m\u00e9thode utilise le service que nous avons d\u00e9finit pr\u00e9c\u00e9demment et souscrit donc \u00e0 l&rsquo;observable <em>getPost<\/em> afin de r\u00e9cup\u00e9rer le flux de donn\u00e9es qui constitue notre Post. Ce service a \u00e9t\u00e9 bien s\u00fbr pass\u00e9 au constructeur de la class afin d&rsquo;\u00eatre disponible pour la m\u00e9thode. Vous remarquez aussi que <em>getPost<\/em> re\u00e7oit comme argument une variable <em>SinglePostId<\/em>. Cette variable est transmise gr\u00e2ce \u00e0 un @Input que nous allons d\u00e9finir en t\u00eate de notre class. Cette variable permettra de pouvoir charger n&rsquo;importe quel Post directement afin de l&rsquo;afficher seul et surtout d&rsquo;y acc\u00e9der par une URL directe sur le site.<\/p>\n<p><code class=\"hljs typescript\">@Input() SinglePostId: number;<\/code><\/p>\n<p>Ajoutons aussi les autres propri\u00e9t\u00e9s de notre class : <\/p>\n<p><code class=\"hljs typescript\">error: any;<br \/>\npost = {<br \/>\n&nbsp;&nbsp;title: {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;rendered: &quot;&quot;<br \/>\n&nbsp;&nbsp;},<br \/>\n&nbsp;&nbsp;excerpt: {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;rendered: &quot;&quot;<br \/>\n&nbsp;&nbsp;},<br \/>\n&nbsp;&nbsp;content: {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;rendered: &quot;&quot;<br \/>\n&nbsp;&nbsp;},<br \/>\n&nbsp;&nbsp;categories: {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;0: 0<br \/>\n&nbsp;&nbsp;},<br \/>\n&nbsp;&nbsp;date: &quot;&quot;,<br \/>\n&nbsp;&nbsp;data: {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;status: 0<br \/>\n&nbsp;&nbsp;}<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Ainsi nous initialisons la variable <em>post<\/em> qui reprend la structure d\u00e9finie dans le provider afin d&rsquo;\u00e9viter le renvoie d&rsquo;une erreur lors de l&rsquo;affichage. En effet, lors de l&rsquo;affichage de la page, les donn\u00e9es \u00ab\u00a0bind\u00e9es\u00a0\u00bb dans le template HTML seront trait\u00e9es avant que le provider ait r\u00e9cup\u00e9r\u00e9 les donn\u00e9es. Si elles ne sont pas initialis\u00e9es auparavant, elles seront d\u00e9clar\u00e9es comme \u00ab\u00a0undefined\u00a0\u00bb et nous r\u00e9colterons une erreur.<\/p>\n<p>Nous aborderons dans le prochain article le component qui permettra d&rsquo;afficher la liste des Post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le component Post est le composant de base de notre d\u00e9veloppement puisque c&rsquo;est l&rsquo;unit\u00e9 d&rsquo;information qui sera demand\u00e9e au serveur. Nous allons voir dans cet article la mise en \u0153uvre de ce component.<\/p>\n","protected":false},"author":3,"featured_media":587,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-700","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Un th\u00e8me Wordpress en Ionic 3\/8 - Le component Post - Ga\u00ebl Corna<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Un th\u00e8me Wordpress en Ionic 3\/8 - Le component Post - Ga\u00ebl Corna\" \/>\n<meta property=\"og:description\" content=\"Le component Post est le composant de base de notre d\u00e9veloppement puisque c&#039;est l&#039;unit\u00e9 d&#039;information qui sera demand\u00e9e au serveur. Nous allons voir dans cet article la mise en \u0153uvre de ce component.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post\" \/>\n<meta property=\"og:site_name\" content=\"Ga\u00ebl Corna\" \/>\n<meta property=\"article:published_time\" content=\"2018-02-27T17:59:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-02-28T09:28:41+00:00\" \/>\n<meta name=\"author\" content=\"gael\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"gael\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post\",\"url\":\"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post\",\"name\":\"Un th\u00e8me Wordpress en Ionic 3\/8 - Le component Post - Ga\u00ebl Corna\",\"isPartOf\":{\"@id\":\"https:\/\/www.gaelcorna.eu\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post#primaryimage\"},\"image\":{\"@id\":\"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg\",\"datePublished\":\"2018-02-27T17:59:27+00:00\",\"dateModified\":\"2018-02-28T09:28:41+00:00\",\"author\":{\"@id\":\"https:\/\/www.gaelcorna.eu\/#\/schema\/person\/5b10e96e843831cd679c134b8f6263e0\"},\"breadcrumb\":{\"@id\":\"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post#primaryimage\",\"url\":\"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg\",\"contentUrl\":\"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.gaelcorna.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Un th\u00e8me WordPress en Ionic 3\/8 &#8211; Le component Post\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.gaelcorna.eu\/#website\",\"url\":\"https:\/\/www.gaelcorna.eu\/\",\"name\":\"Ga\u00ebl Corna\",\"description\":\"D\u00e9veloppeur WEB. Aussi\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.gaelcorna.eu\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.gaelcorna.eu\/#\/schema\/person\/5b10e96e843831cd679c134b8f6263e0\",\"name\":\"gael\",\"url\":\"https:\/\/www.lagencebleu.com\/gaelcorna\/single\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Un th\u00e8me Wordpress en Ionic 3\/8 - Le component Post - Ga\u00ebl Corna","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":"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post","og_locale":"fr_FR","og_type":"article","og_title":"Un th\u00e8me Wordpress en Ionic 3\/8 - Le component Post - Ga\u00ebl Corna","og_description":"Le component Post est le composant de base de notre d\u00e9veloppement puisque c'est l'unit\u00e9 d'information qui sera demand\u00e9e au serveur. Nous allons voir dans cet article la mise en \u0153uvre de ce component.","og_url":"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post","og_site_name":"Ga\u00ebl Corna","article_published_time":"2018-02-27T17:59:27+00:00","article_modified_time":"2018-02-28T09:28:41+00:00","author":"gael","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"gael","Dur\u00e9e de lecture estim\u00e9e":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post","url":"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post","name":"Un th\u00e8me Wordpress en Ionic 3\/8 - Le component Post - Ga\u00ebl Corna","isPartOf":{"@id":"https:\/\/www.gaelcorna.eu\/#website"},"primaryImageOfPage":{"@id":"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post#primaryimage"},"image":{"@id":"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post#primaryimage"},"thumbnailUrl":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg","datePublished":"2018-02-27T17:59:27+00:00","dateModified":"2018-02-28T09:28:41+00:00","author":{"@id":"https:\/\/www.gaelcorna.eu\/#\/schema\/person\/5b10e96e843831cd679c134b8f6263e0"},"breadcrumb":{"@id":"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post#primaryimage","url":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg","contentUrl":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-content\/uploads\/sites\/2\/2017\/10\/screens.svg"},{"@type":"BreadcrumbList","@id":"http:\/\/gaelcorna.eu\/single\/700\/theme-wordpress-ionic-1-8-component-post#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.gaelcorna.eu\/"},{"@type":"ListItem","position":2,"name":"Un th\u00e8me WordPress en Ionic 3\/8 &#8211; Le component Post"}]},{"@type":"WebSite","@id":"https:\/\/www.gaelcorna.eu\/#website","url":"https:\/\/www.gaelcorna.eu\/","name":"Ga\u00ebl Corna","description":"D\u00e9veloppeur WEB. Aussi","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.gaelcorna.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/www.gaelcorna.eu\/#\/schema\/person\/5b10e96e843831cd679c134b8f6263e0","name":"gael","url":"https:\/\/www.lagencebleu.com\/gaelcorna\/single\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/posts\/700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/comments?post=700"}],"version-history":[{"count":9,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/posts\/700\/revisions"}],"predecessor-version":[{"id":775,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/posts\/700\/revisions\/775"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/media\/587"}],"wp:attachment":[{"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/media?parent=700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/categories?post=700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lagencebleu.com\/gaelcorna\/wp-json\/wp\/v2\/tags?post=700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}