{"id":1632,"date":"2018-10-22T21:00:00","date_gmt":"2018-10-22T19:00:00","guid":{"rendered":"https:\/\/demo.sidekick.be\/itenium\/angular-journey\/"},"modified":"2025-11-28T13:31:46","modified_gmt":"2025-11-28T12:31:46","slug":"angular-journey","status":"publish","type":"post","link":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/","title":{"rendered":"Angular Road Trip"},"content":{"rendered":"<ul>\n<li>We did not have <a href=\"https:\/\/cli.angular.io\/\">Angular-cli<\/a> yet, we had to do the packing and configuration ourselves.<\/li>\n<li>We did not have a lot of documentation, and the one we had was often out of date and misleading.<\/li>\n<li>Editors(VSCode, Webstorm, VS..) did not cope well with Angular yet. The intellisense was often lacking, inline templates support was lacking, and so on..<\/li>\n<li>We got Release Candidates that contained major breaking changes. <em>\u201cWTF? <a href=\"https:\/\/semver.org\">Semver<\/a> much?\u201d<\/em><\/li>\n<li>Npm equaled pain. Back then even more than now. Packages were often not versioned in a way that made sense.<\/li>\n<\/ul>\n<p>\u201cexpression has changed after it was checked\u201d One of the interviewing questions I ask candidates is if they know this error message that would pop up in the console window in development mode. For me it\u2019s an indicator of their experience with Angular. If you have never seen this error you\u2019ve never gone through hell and back \ud83d\ude09<\/p>\n<p><\/p>\n<p>In the beginning it was still suggested to use SystemJs instead of WebPack. And then things became silent around SystemJs. The community was dying to hear from the Angular team what they\u2019d choose next as the preferred packing mechanism.<\/p>\n<p><\/p>\n<p>I remember asking the question to Igor Minar myself, one of the Angular project leads, on the first NG-BE conference ever. His eyes rolled to the back of his head. Apparently wherever he went people would ask that question and he got tired of it, especially because he could not give a clear answer yet. I thought I\u2019d be smart and asked what google is using themselves? Apparently they used their own mechanism. Making a possible answer even more complicated. It was not decided that day. But later it was made clear that Webpack would be embraced as the preferred packaging mechanism.<\/p>\n<p><\/p>\n<p>For me, the most important session at NB-BE was the one given by Todd Moto. He talked about forms in Angular. A session we welcomed because we had quite a struggle with that. So many possibilities and so little answers. Soon we realized that for business applications heavily depending on forms and validations Reactive Forms would be the way to go in most cases. But how do you implement it when you have a tree of components who all contain a part of the form and you have only one save button at the bottom of the page? I have a solid idea now, but only because it\u2019s the logical result of a road full of trial &amp; error.<\/p>\n<p><\/p>\n<h1 id=\"as-of-today\">As of today<\/h1>\n<p>I\u2019m still glad I can work with Angular every day.<\/p>\n<ul>\n<li>The framework embraces <a href=\"https:\/\/www.typescriptlang.org\/\">TypeScript<\/a> which is a revelation compared to JavaScript.<\/li>\n<li>I think it\u2019s a great framework. Especially for full stack developers who can not fully dedicate their time to frontend development.<\/li>\n<li>It\u2019s a rich and mature framework, still actively developed and each update comes with a lot of nice new features.<\/li>\n<li>The editors matured as well. Giving (almost) full support to the latest Angular versions.<\/li>\n<li>Flux implementations(ngrx, ngxs, ..) made it a lot cleaner to manage your data and have a single source of truth.<\/li>\n<li>You can aim for a minimal startup time and preload lazy loaded modules in the background with just a little configuration.<\/li>\n<li>Angular supports different configurations for different environments.<\/li>\n<li>Your code is minimized, uglified, and tree-shaken.<\/li>\n<li>Angular-CLI gets you going within seconds. You can have a basic shell application built with the Angular framework and thus starting point for your newest project. <br \/> All in all it\u2019s just a great framework for modern web applications and most of the time a joy to work with \ud83d\ude42<\/li>\n<\/ul>\n<h1>Extras<\/h1>\n<p><b>Other interesting reads<\/b><\/p>\n<ul>\n<li><a href=\"https:\/\/angular.io\/\">Angular<\/a><\/li>\n<li><a href=\"https:\/\/cli.angular.io\/\">Angular CLI<\/a><\/li>\n<li><a href=\"https:\/\/www.typescriptlang.org\/\">TypeScript<\/a><\/li>\n<li><a href=\"https:\/\/semver.org\/\">SemVer<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=cRC9DlH45lA\">Angular: The Documentary | An origin story<\/a><\/li>\n<\/ul>\n<h1> Package Versions <i class=\"fa fa-info-circle\" style=\"float: right; color: cornflowerblue; font-size: 28px\" title=\"Package versions used for this post and in the accompanying code on Github\"><\/i><\/h1>\n<div><a href=\"https:\/\/github.com\/angular\/angular\" class=\"github\"><img decoding=\"async\" src=\"https:\/\/img.shields.io\/github\/stars\/angular\/angular.svg?style=social&#038;label=Star\" \/><\/a><a href=\"https:\/\/github.com\/angular\/angular\">angular\/angular<\/a>: v6 <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Today I want to blog about my Angular(2 &#8211; 6) experiences the past years.<\/p>\n<p>After 3 years of desktop development I\u2019ve started with Angular 2+ in july 2016, when it was still in beta.<\/p>\n<h1 class=\"hide-from-excerpt\" id=\"back-then\">Back then<\/h1>\n<p>Back then the landscape was a lot more difficult than it is today.<\/p>\n","protected":false},"author":1,"featured_media":2097,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[3],"tags":[23,10],"class_list":["post-1632","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-angular","tag-war-story"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Angular Road Trip - Itenium<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Angular Road Trip - Itenium\" \/>\n<meta property=\"og:description\" content=\"Today I want to blog about my Angular(2 - 6) experiences the past years.After 3 years of desktop development I\u2019ve started with Angular 2+ in july 2016, when it was still in beta.Back thenBack then the landscape was a lot more difficult than it is today.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/\" \/>\n<meta property=\"og:site_name\" content=\"Itenium\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-22T19:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-28T12:31:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/angular.png\" \/>\n\t<meta property=\"og:image:width\" content=\"360\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Usdevelop\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Usdevelop\" \/>\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\":\"WebPage\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/\",\"url\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/\",\"name\":\"Angular Road Trip - Itenium\",\"isPartOf\":{\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/angular.png\",\"datePublished\":\"2018-10-22T19:00:00+00:00\",\"dateModified\":\"2025-11-28T12:31:46+00:00\",\"author\":{\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/6ab401ce01e858184ee4a8667fe0f022\"},\"breadcrumb\":{\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/#primaryimage\",\"url\":\"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/angular.png\",\"contentUrl\":\"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/angular.png\",\"width\":360,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/demo.sidekick.be\/itenium\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Angular Road Trip\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/#website\",\"url\":\"https:\/\/demo.sidekick.be\/itenium\/\",\"name\":\"Itenium\",\"description\":\"We build software. We build careers.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/demo.sidekick.be\/itenium\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/6ab401ce01e858184ee4a8667fe0f022\",\"name\":\"Usdevelop\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cc8cf9b9e9d5bbe7e8d247907cc9ac8457bbfa2854b52eaddf6529adfe88ceab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cc8cf9b9e9d5bbe7e8d247907cc9ac8457bbfa2854b52eaddf6529adfe88ceab?s=96&d=mm&r=g\",\"caption\":\"Usdevelop\"},\"sameAs\":[\"https:\/\/demo.sidekick.be\/itenium\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Angular Road Trip - Itenium","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Angular Road Trip - Itenium","og_description":"Today I want to blog about my Angular(2 - 6) experiences the past years.After 3 years of desktop development I\u2019ve started with Angular 2+ in july 2016, when it was still in beta.Back thenBack then the landscape was a lot more difficult than it is today.","og_url":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/","og_site_name":"Itenium","article_published_time":"2018-10-22T19:00:00+00:00","article_modified_time":"2025-11-28T12:31:46+00:00","og_image":[{"width":360,"height":300,"url":"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/angular.png","type":"image\/png"}],"author":"Usdevelop","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Usdevelop","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/","url":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/","name":"Angular Road Trip - Itenium","isPartOf":{"@id":"https:\/\/demo.sidekick.be\/itenium\/#website"},"primaryImageOfPage":{"@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/#primaryimage"},"image":{"@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/#primaryimage"},"thumbnailUrl":"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/angular.png","datePublished":"2018-10-22T19:00:00+00:00","dateModified":"2025-11-28T12:31:46+00:00","author":{"@id":"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/6ab401ce01e858184ee4a8667fe0f022"},"breadcrumb":{"@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/#primaryimage","url":"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/angular.png","contentUrl":"https:\/\/demo.sidekick.be\/itenium\/wp-content\/uploads\/2025\/11\/angular.png","width":360,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/demo.sidekick.be\/itenium\/blog\/javascript\/angular-journey\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/demo.sidekick.be\/itenium\/"},{"@type":"ListItem","position":2,"name":"Angular Road Trip"}]},{"@type":"WebSite","@id":"https:\/\/demo.sidekick.be\/itenium\/#website","url":"https:\/\/demo.sidekick.be\/itenium\/","name":"Itenium","description":"We build software. We build careers.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/demo.sidekick.be\/itenium\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/6ab401ce01e858184ee4a8667fe0f022","name":"Usdevelop","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/demo.sidekick.be\/itenium\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cc8cf9b9e9d5bbe7e8d247907cc9ac8457bbfa2854b52eaddf6529adfe88ceab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cc8cf9b9e9d5bbe7e8d247907cc9ac8457bbfa2854b52eaddf6529adfe88ceab?s=96&d=mm&r=g","caption":"Usdevelop"},"sameAs":["https:\/\/demo.sidekick.be\/itenium"]}]}},"_links":{"self":[{"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/posts\/1632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/comments?post=1632"}],"version-history":[{"count":3,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/posts\/1632\/revisions"}],"predecessor-version":[{"id":2305,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/posts\/1632\/revisions\/2305"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/media\/2097"}],"wp:attachment":[{"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/media?parent=1632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/categories?post=1632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demo.sidekick.be\/itenium\/wp-json\/wp\/v2\/tags?post=1632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}