{"id":2499,"date":"2016-01-11T12:24:16","date_gmt":"2016-01-11T11:24:16","guid":{"rendered":"https:\/\/www.angulararchitects.io\/?p=2499"},"modified":"2016-01-11T12:24:16","modified_gmt":"2016-01-11T11:24:16","slug":"parser-und-formatter-in-angular-2","status":"publish","type":"post","link":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/","title":{"rendered":"Parser Und Formatter In Angular 2"},"content":{"rendered":"<div class=\"article\">\n<p>AngularJS 1.x erlaubt mit seinem Parser-Konzept das Verarbeiten von Benutzereingaben, bevor <code>ng-model<\/code> sie \u00fcber die Datenbindung ans Model zur\u00fcckschreibt. Analog dazu k\u00f6nnen Formatter gebundene Daten aus dem Model formatieren, bevor sie in einem Eingabefeld aufscheinen.<\/p>\n<p>In Angular 2 gibt es solch ein Konzept nicht - zumindest nicht auf den ersten Blick. Allerdings findet man hier das Konzept der <code>ValueAccessor<\/code>. Dabei handelt es sich um Klassen, die f\u00fcr die Synchronisation zwischen Steuerelementen und dem Model zust\u00e4ndig sind. Da unterschiedliche Steuerelemente, wie Checkboxes oder Eingabefelder, hierbei unterschiedlich zu nutzen sind, gibt es auch verschiedene <code>ValueAccessor<\/code>-Implementierungen.<\/p>\n<p>F\u00fcr eigene Implementierungen bietet sich u. a. das Interface. <code>ControlValueAccessor<\/code> an. Es definiert die Methoden <code>registerOnChange<\/code> sowie <code>registerOnTouched<\/code>, welche von Angular Callbacks \u00fcbergeben bekommen. Diese nutzt der Value-Accessor um ge\u00e4nderte Daten zum Controller zur\u00fcckzusenden. Sie sind nach \u00c4nderungen im jeweiligen Steuerelement oder beim Verlassen des Steuerelements anzusto\u00dfen. Daneben gibt das Interface die Methode <code>writeValue<\/code> vor. Sie bekommt von Angular Werte aus dem Model, welche es in das Steuerelement zu schreiben gilt.<\/p>\n<p>Das nachfolgende Beispiel demonstriert, wie Entwicklungs-Teams damit die gebundenen Daten im Rahmen der Datenbindung modifizieren k\u00f6nnen. Es wandelt ein Datum, das im Model als ISO-String vorliegt, in ein deutsches Datum um und schreibt Modifikationen an diesem Datum in Form eines ISO-Strings ins Model zur\u00fcck. <\/p>\n<p>Um das Zur\u00fcckschreiben ins Model zu beeinflussen, richtet das betrachtete Beispiel Event-Handler f\u00fcr das <code>input<\/code>- und das <code>blur<\/code>-Event des Host-Steuerelements ein. Beim Host-Steuerelement handelt es sich beispielsweise um ein Eingabefeld (<code>&lt;input&gt;<\/code>) oder eine Textarea. Diese definiert es \u00fcber die Eigenschaft <code>host<\/code> des <code>Directive<\/code>-Dekorators. Der Event-Handler f\u00fcr <code>input<\/code> modifiziert die Eingaben durch Aufruf des zuvor besprochenen Callbacks <code>onChange<\/code>.<\/p>\n<p>Zum Beeinflussen der im Steuerelement pr\u00e4sentierten Daten \u00fcberschreibt das Beispiel die Methode <code>writeValue<\/code>. Sie k\u00fcmmert sich um die Formatierung und delegiert anschlie\u00dfend an die Basis-Implementierung von <code>writeValue<\/code>, welche ins Steuerelement schreibt, weiter.<\/p>\n<p>\u00dcber die Eigenschaft <code>selector<\/code> gibt die Implementierung bekannt, f\u00fcr welche Elemente sie zu nutzen ist. Der Wert <code>input[date]<\/code> adressiert dabei <code>input<\/code>-Elemente mit einem <code>date<\/code>-Attribut, beispielsweise <code>&lt;input date [(ng-model)]=\"datum\"&gt;<\/code>.<\/p>\n<p>Damit Angular 2 die Direktive tats\u00e4chlich als <code>ValueAccessor<\/code> nutzt, ist ein Provider einzurichten, der sie ans Token <code>NG_VALUE_ACCESSOR<\/code> bindet. Zur Laufzeit ruft Angular 2 s\u00e4mtliche Elemente, die an dieses Token gebunden wurden, ab und nutzt sie zur Datenbindung beim jeweiligen Element. Die beim Definieren des Providers hinterlegte Angabe <code>multi: true<\/code> sagt aus, dass mehrere Elemente an <code>NG_VALUE_ACCESSOR<\/code> gebunden sein d\u00fcrfen. Die Indirektion \u00fcber <code>forwardRef<\/code> l\u00f6st das Henne-Ei-Problem, das durch die gegenseitige Referenzierung zwischen dem Provider und dem <code>ValueAccessor<\/code> entsteht.<\/p>\n<pre><code>import {Directive, Renderer, ElementRef, Self, forwardRef, provide} from '@angular\/core';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular\/forms';\n\n@Directive({\n    selector: '[mydate]',\n    host: {'(input)': 'input($event.target.value)', '(blur)': 'blur()'},\n    providers: [{\n        provide: NG_VALUE_ACCESSOR,\n        useExisting: forwardRef(() =&gt; DateValueAccessor),\n        multi: true}]\n})\nexport class DateValueAccessor implements ControlValueAccessor {\n\n    onChange = (_: any) =&gt; {};\n    onTouched = () =&gt; {};\n\n    constructor(private _renderer: Renderer, private _elementRef: ElementRef) {}\n\n    registerOnChange(fn: (_: any) =&gt; void): void { this.onChange = fn; }\n    registerOnTouched(fn: () =&gt; void): void { this.onTouched = fn; }\n\n    blur() {\n        this.onTouched();\n    }\n\n    \/\/ Parser: View --&gt; Ctrl\n    input(value) {\n\n        \/\/ Write back to model\n        if (value) {\n            value = value.split(\/\\.\/);\n            value = value[2] + \"-\" + value[1] + \"-\" + value[0];\n        }\n\n        this.onChange(value);\n    }\n\n    \/\/ Formatter: Ctrl --&gt; View\n    writeValue(value: any): void {\n\n        \/\/ Write to view\n        if (value) {\n            var date = new Date(value);\n\n            value =\n                date.getDate() + \".\"\n                    + (date.getMonth()+1) + \".\"\n                    + date.getFullYear();\n        }\n\n        var normalizedValue = (value) ? value : '';\n        this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', normalizedValue);\n\n    }\n\n}\n<\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Parser Und Formatter In Angular 2<\/p>\n","protected":false},"author":9,"featured_media":2997,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2499","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unkategorisiert"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Parser Und Formatter In Angular 2 - ANGULARarchitects<\/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:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Parser Und Formatter In Angular 2 - ANGULARarchitects\" \/>\n<meta property=\"og:description\" content=\"Parser Und Formatter In Angular 2\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/\" \/>\n<meta property=\"og:site_name\" content=\"ANGULARarchitects\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-11T11:24:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2019\/04\/blog-2355684-1280.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"853\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Manfred Steyer, GDE\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@daniel\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Manfred Steyer, GDE\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\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\":\"Article\",\"@id\":\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/\"},\"author\":{\"name\":\"Manfred Steyer, GDE\",\"@id\":\"https:\/\/www.angulararchitects.io\/en\/#\/schema\/person\/15628efa7af4475ffaaeeb26c5112951\"},\"headline\":\"Parser Und Formatter In Angular 2\",\"datePublished\":\"2016-01-11T11:24:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/\"},\"wordCount\":403,\"publisher\":{\"@id\":\"https:\/\/www.angulararchitects.io\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2019\/04\/blog-2355684-1280.jpg\",\"articleSection\":[\"Unkategorisiert\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/\",\"url\":\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/\",\"name\":\"Parser Und Formatter In Angular 2 - ANGULARarchitects\",\"isPartOf\":{\"@id\":\"https:\/\/www.angulararchitects.io\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2019\/04\/blog-2355684-1280.jpg\",\"datePublished\":\"2016-01-11T11:24:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#primaryimage\",\"url\":\"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2019\/04\/blog-2355684-1280.jpg\",\"contentUrl\":\"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2019\/04\/blog-2355684-1280.jpg\",\"width\":1280,\"height\":853},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.angulararchitects.io\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Parser Und Formatter In Angular 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.angulararchitects.io\/en\/#website\",\"url\":\"https:\/\/www.angulararchitects.io\/en\/\",\"name\":\"ANGULARarchitects\",\"description\":\"AngularArchitects.io\",\"publisher\":{\"@id\":\"https:\/\/www.angulararchitects.io\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.angulararchitects.io\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.angulararchitects.io\/en\/#organization\",\"name\":\"ANGULARarchitects\",\"alternateName\":\"SOFTWAREarchitects\",\"url\":\"https:\/\/www.angulararchitects.io\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.angulararchitects.io\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2023\/07\/AA-Logo-RGB-horizontal-inside-knowledge-black.svg\",\"contentUrl\":\"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2023\/07\/AA-Logo-RGB-horizontal-inside-knowledge-black.svg\",\"width\":644,\"height\":216,\"caption\":\"ANGULARarchitects\"},\"image\":{\"@id\":\"https:\/\/www.angulararchitects.io\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/github.com\/angular-architects\",\"https:\/\/www.linkedin.com\/company\/angular-architects\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.angulararchitects.io\/en\/#\/schema\/person\/15628efa7af4475ffaaeeb26c5112951\",\"name\":\"Manfred Steyer, GDE\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.angulararchitects.io\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a0b59539674d8b71ea1c1f4764b11244b5f499203f1d11b40f37d8f3f90be033?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a0b59539674d8b71ea1c1f4764b11244b5f499203f1d11b40f37d8f3f90be033?s=96&d=mm&r=g\",\"caption\":\"Manfred Steyer, GDE\"},\"sameAs\":[\"https:\/\/x.com\/daniel\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Parser Und Formatter In Angular 2 - ANGULARarchitects","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:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/","og_locale":"en_US","og_type":"article","og_title":"Parser Und Formatter In Angular 2 - ANGULARarchitects","og_description":"Parser Und Formatter In Angular 2","og_url":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/","og_site_name":"ANGULARarchitects","article_published_time":"2016-01-11T11:24:16+00:00","og_image":[{"width":1280,"height":853,"url":"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2019\/04\/blog-2355684-1280.jpg","type":"image\/jpeg"}],"author":"Manfred Steyer, GDE","twitter_card":"summary_large_image","twitter_creator":"@daniel","twitter_misc":{"Written by":"Manfred Steyer, GDE","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#article","isPartOf":{"@id":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/"},"author":{"name":"Manfred Steyer, GDE","@id":"https:\/\/www.angulararchitects.io\/en\/#\/schema\/person\/15628efa7af4475ffaaeeb26c5112951"},"headline":"Parser Und Formatter In Angular 2","datePublished":"2016-01-11T11:24:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/"},"wordCount":403,"publisher":{"@id":"https:\/\/www.angulararchitects.io\/en\/#organization"},"image":{"@id":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2019\/04\/blog-2355684-1280.jpg","articleSection":["Unkategorisiert"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/","url":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/","name":"Parser Und Formatter In Angular 2 - ANGULARarchitects","isPartOf":{"@id":"https:\/\/www.angulararchitects.io\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#primaryimage"},"image":{"@id":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2019\/04\/blog-2355684-1280.jpg","datePublished":"2016-01-11T11:24:16+00:00","breadcrumb":{"@id":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#primaryimage","url":"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2019\/04\/blog-2355684-1280.jpg","contentUrl":"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2019\/04\/blog-2355684-1280.jpg","width":1280,"height":853},{"@type":"BreadcrumbList","@id":"https:\/\/www.angulararchitects.io\/en\/blog\/parser-und-formatter-in-angular-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.angulararchitects.io\/en\/"},{"@type":"ListItem","position":2,"name":"Parser Und Formatter In Angular 2"}]},{"@type":"WebSite","@id":"https:\/\/www.angulararchitects.io\/en\/#website","url":"https:\/\/www.angulararchitects.io\/en\/","name":"ANGULARarchitects","description":"AngularArchitects.io","publisher":{"@id":"https:\/\/www.angulararchitects.io\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.angulararchitects.io\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.angulararchitects.io\/en\/#organization","name":"ANGULARarchitects","alternateName":"SOFTWAREarchitects","url":"https:\/\/www.angulararchitects.io\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.angulararchitects.io\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2023\/07\/AA-Logo-RGB-horizontal-inside-knowledge-black.svg","contentUrl":"https:\/\/www.angulararchitects.io\/wp-content\/uploads\/2023\/07\/AA-Logo-RGB-horizontal-inside-knowledge-black.svg","width":644,"height":216,"caption":"ANGULARarchitects"},"image":{"@id":"https:\/\/www.angulararchitects.io\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/github.com\/angular-architects","https:\/\/www.linkedin.com\/company\/angular-architects\/"]},{"@type":"Person","@id":"https:\/\/www.angulararchitects.io\/en\/#\/schema\/person\/15628efa7af4475ffaaeeb26c5112951","name":"Manfred Steyer, GDE","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.angulararchitects.io\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a0b59539674d8b71ea1c1f4764b11244b5f499203f1d11b40f37d8f3f90be033?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a0b59539674d8b71ea1c1f4764b11244b5f499203f1d11b40f37d8f3f90be033?s=96&d=mm&r=g","caption":"Manfred Steyer, GDE"},"sameAs":["https:\/\/x.com\/daniel"]}]}},"_links":{"self":[{"href":"https:\/\/www.angulararchitects.io\/en\/wp-json\/wp\/v2\/posts\/2499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.angulararchitects.io\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.angulararchitects.io\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.angulararchitects.io\/en\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.angulararchitects.io\/en\/wp-json\/wp\/v2\/comments?post=2499"}],"version-history":[{"count":0,"href":"https:\/\/www.angulararchitects.io\/en\/wp-json\/wp\/v2\/posts\/2499\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.angulararchitects.io\/en\/wp-json\/wp\/v2\/media\/2997"}],"wp:attachment":[{"href":"https:\/\/www.angulararchitects.io\/en\/wp-json\/wp\/v2\/media?parent=2499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.angulararchitects.io\/en\/wp-json\/wp\/v2\/categories?post=2499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.angulararchitects.io\/en\/wp-json\/wp\/v2\/tags?post=2499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}