<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Learn Angular</title>
    <description>The latest articles on DEV Community by Learn Angular (@learn-angular).</description>
    <link>https://dev.to/learn-angular</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10664%2F75642049-815d-46d9-ab79-f006b2fa3598.png</url>
      <title>DEV Community: Learn Angular</title>
      <link>https://dev.to/learn-angular</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/learn-angular"/>
    <language>en</language>
    <item>
      <title>LLM prompts and AI IDE setup</title>
      <dc:creator>mehdi</dc:creator>
      <pubDate>Sat, 12 Jul 2025 09:37:12 +0000</pubDate>
      <link>https://dev.to/learn-angular/llm-prompts-and-ai-ide-setup-4loc</link>
      <guid>https://dev.to/learn-angular/llm-prompts-and-ai-ide-setup-4loc</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://angular.dev/ai/develop-with-ai" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fangular.dev%2Fassets%2Fimages%2Fng-image.jpg" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://angular.dev/ai/develop-with-ai" rel="noopener noreferrer" class="c-link"&gt;
            LLM prompts and AI IDE setup • Angular
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            The web development framework for building modern apps.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fangular.dev%2Fassets%2Ficons%2Ffavicon-48x48.png"&gt;
          angular.dev
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>angular</category>
      <category>ai</category>
      <category>typescript</category>
      <category>llm</category>
    </item>
    <item>
      <title>Angular v20 Developer Event 2025</title>
      <dc:creator>mehdi</dc:creator>
      <pubDate>Fri, 11 Jul 2025 17:48:09 +0000</pubDate>
      <link>https://dev.to/learn-angular/angular-v20-developer-event-2025-4paf</link>
      <guid>https://dev.to/learn-angular/angular-v20-developer-event-2025-4paf</guid>
      <description>&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/FcDamOe1qxA"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Angular v20 has landed and it is filled with features across performance, security, improved tooling and so much more.&lt;/p&gt;

&lt;p&gt;What are you most excited about?&lt;/p&gt;

&lt;p&gt;After the show, there's still more to see and do:&lt;br&gt;
Find even more features in the Angular v20 Blog → &lt;a href="https://goo.gle/angular-v20-blog" rel="noopener noreferrer"&gt;https://goo.gle/angular-v20-blog&lt;/a&gt;&lt;br&gt;
Cast your vote for the Angular Mascot → &lt;a href="https://goo.gle/angular-mascot-rfc" rel="noopener noreferrer"&gt;https://goo.gle/angular-mascot-rfc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Continue the conversation online → &lt;a href="https://bsky.app/profile/angular.dev" rel="noopener noreferrer"&gt;https://bsky.app/profile/angular.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>typescript</category>
      <category>frontend</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Building Agentic Apps with Angular and Genkit live!</title>
      <dc:creator>mehdi</dc:creator>
      <pubDate>Sun, 20 Apr 2025 10:23:03 +0000</pubDate>
      <link>https://dev.to/learn-angular/building-agentic-apps-with-angular-and-genkit-live-2c05</link>
      <guid>https://dev.to/learn-angular/building-agentic-apps-with-angular-and-genkit-live-2c05</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/mx7yZoIa2n4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Join Devin from the Angular team, as he live codes an AI-powered app with Angular and Genkit that interactively creates graphic novels. This is going to be a fun one... you won't want to miss it&lt;/p&gt;

&lt;p&gt;Get the code - &lt;a href="https://github.com/angular/examples/tree/main/genkit-angular-story-generator" rel="noopener noreferrer"&gt;https://github.com/angular/examples/tree/main/genkit-angular-story-generator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Register for #BuildingAgenticApps campaign:  &lt;a href="https://flutter.dev/events/building-agentic-apps" rel="noopener noreferrer"&gt;https://flutter.dev/events/building-agentic-apps&lt;/a&gt;&lt;br&gt;
Learn Angular - &lt;a href="https://angular.dev/tutorials" rel="noopener noreferrer"&gt;https://angular.dev/tutorials&lt;/a&gt;&lt;br&gt;
More about Genkit - &lt;a href="https://firebase.google.com/docs/genkit" rel="noopener noreferrer"&gt;https://firebase.google.com/docs/genkit&lt;/a&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>typescript</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>A simpler Angular component inheritance</title>
      <dc:creator>mehdi</dc:creator>
      <pubDate>Sat, 05 Apr 2025 04:41:11 +0000</pubDate>
      <link>https://dev.to/learn-angular/a-simpler-angular-component-inheritance-4gfa</link>
      <guid>https://dev.to/learn-angular/a-simpler-angular-component-inheritance-4gfa</guid>
      <description>&lt;p&gt;Related to this documentation in Angular website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://angular.dev/guide/components/inheritance" rel="noopener noreferrer"&gt;https://angular.dev/guide/components/inheritance&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simplifying inheritance by removing the need for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;having a constructor in the parent just for common dependency injection&lt;/li&gt;
&lt;li&gt;having a constructor in the child just for common dependency injection&lt;/li&gt;
&lt;li&gt;calling super for common dependency injection&lt;/li&gt;
&lt;li&gt;calling super for common lifecycle hooks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stackblitz link:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stackblitz.com/edit/stackblitz-starters-tzhggu9s?file=src%2Fmain.ts" rel="noopener noreferrer"&gt;https://stackblitz.com/edit/stackblitz-starters-tzhggu9s?file=src%2Fmain.ts&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://stackblitz.com/edit/stackblitz-starters-tzhggu9s?embed=1&amp;amp;file=src%2Fmain.ts&amp;amp;view=editor" width="100%" height="500"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Parent component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;``&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Parent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="nx"&gt;heroService&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;inject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;HeroService&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nf"&gt;ngOnInit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;onInit&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="nf"&gt;onInit&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Child component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;child&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Child`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Child&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Parent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;override&lt;/span&gt; &lt;span class="nf"&gt;onInit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;heroService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;App:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;app-root&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&amp;lt;child/&amp;gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;Child&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;App&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

&lt;span class="nf"&gt;bootstrapApplication&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Common service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Injectable&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;providedIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;root&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HeroService&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;heroService&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Advice is to have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"compilerOptions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"noImplicitOverride"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;in tsconfig if not already there.&lt;br&gt;
Goal is to avoid dev to mistakenly write an ngOnInit without knowing they'd be overriding the parent one.&lt;/p&gt;

</description>
      <category>angular</category>
      <category>webdev</category>
      <category>typescript</category>
      <category>javascript</category>
    </item>
    <item>
      <title>ng-conf 2024: Angular control flow</title>
      <dc:creator>mehdi</dc:creator>
      <pubDate>Sun, 26 Jan 2025 09:37:23 +0000</pubDate>
      <link>https://dev.to/learn-angular/ng-conf-2024-angular-control-flow-4p4k</link>
      <guid>https://dev.to/learn-angular/ng-conf-2024-angular-control-flow-4p4k</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/WoIFriL3k8M"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Join Dan Wahlin as he explores Angular's latest advancements, including the game-changing new control flow syntax, which simplifies code and enhances type checking. Discover how this new feature can supercharge your Angular development while also simplifying maintenance.&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://www.youtube.com/watch?v=WoIFriL3k8M" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=WoIFriL3k8M&lt;/a&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>typescript</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>ng conf 2024: GitHub Co-pilot with Angular</title>
      <dc:creator>mehdi</dc:creator>
      <pubDate>Sun, 26 Jan 2025 08:28:42 +0000</pubDate>
      <link>https://dev.to/learn-angular/ng-conf-2024-github-co-pilot-with-angular-664</link>
      <guid>https://dev.to/learn-angular/ng-conf-2024-github-co-pilot-with-angular-664</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/bBpHGUn-O5U"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Experience the game-changing potential of AI paired programming with GitHub Copilot to streamline your development processes. Can’t remember the proper syntax for that logic you need to write? What’s this code doing and who can help explain it to me? How do I create proper unit tests to keep my code operating properly? Ugh! Why isn't anyone around to pair with you who can help you solve this coding problem right away?&lt;/p&gt;

&lt;p&gt;You'll learn in this session that you have access to the tools and services to help you deliver to your high demands and standards. Get ready to hit the ground running in this fast-paced, demo-heavy presentation that takes you through some of the best and most effective tips and tricks using GitHub, AI, and VS Code. Learn how to setup your environment fast, collaborate with your AI pair programming partner, and deploy apps using some of the best tools available that you can use today!&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://www.youtube.com/watch?v=bBpHGUn-O5U" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=bBpHGUn-O5U&lt;/a&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>typescript</category>
      <category>ai</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>NG Conf 2024 Keynote</title>
      <dc:creator>mehdi</dc:creator>
      <pubDate>Sun, 26 Jan 2025 06:54:00 +0000</pubDate>
      <link>https://dev.to/learn-angular/ng-conf-2024-keynote-30pd</link>
      <guid>https://dev.to/learn-angular/ng-conf-2024-keynote-30pd</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/nIBseTi6RVk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;ng-conf 2024 is a two-day double track conference focused on building the Angular community.  Meet the Angular Team and some of the biggest names in the community. Learn the latest in Angular, build your network, and grow your skills. Developers from across the globe converge on Salt Lake City, UT every year to attend talks and workshops by the Angular team and community experts.&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://www.youtube.com/watch?v=nIBseTi6RVk" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=nIBseTi6RVk&lt;/a&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>typescript</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
