
Explore an introduction to Angular and the architecture of Angular apps. Set up your development environment, create your first Angular app, and review the project files and folders.
Discover what Angular is and why you should learn it for building maintainable client applications with HTML, CSS, and TypeScript, using a clean, testable framework.
Explore how Angular apps split into front-end and back-end, with the client handling HTML, CSS, TypeScript, and presentation logic, while the server hosts databases and APIs.
Set up your development environment to build Angular apps by installing Node, using npm to install Angular CLI globally, and verifying installations with node --version and ng --version.
Create a new angular project with angular cli, edit in vs code, and run ng serve to launch a local dev server at localhost:4200 for your first angular app.
Discover the structure of an Angular project, from the src folder with the app module and component to assets, environments, and bootstrapping via main.ts and polyfills.
Explore how Angular uses webpack to bundle code into polyfills, main.bundle, styles.bundle, and vendor.bundle, with hot module replacement updating the app and injecting bundles into index.html.
Trace the evolution from AngularJS to Angular 2 and Angular 4, explain the TypeScript rewrite, and show how version alignment unifies core libraries like the router for developers.
Explore TypeScript fundamentals and object-oriented programming principles essential for angular development, including type annotations, arrow functions, interfaces, classes, constructors, access modifiers, properties, and modules.
TypeScript is a superset of JavaScript with optional static typing and added object-oriented features like classes and interfaces. It compiles to JavaScript, catching errors at compile time and improving tooling.
Install TypeScript globally, write your first TypeScript program in main.ts, and transpile it with the TypeScript compiler. Learn that JavaScript code is valid TypeScript and how ng serve automates transpilation.
Learn TypeScript variable declarations, compare var and let, and see how let provides block scope while var behaves differently. TypeScript compiler catches errors at compile time and outputs ES5 JavaScript.
Explore TypeScript types, including number, boolean, string, any, arrays, and enums; learn type inference, annotations, compilation errors, and how enums compile for safer code.
Learn how to use type assertions in TypeScript to tell the compiler a variable is a string, using angle-bracket and as syntax, without changing runtime behavior.
Explore how arrow functions in TypeScript simplify function definitions for Angular apps, using console.log, single-line bodies, optional parentheses for one parameter, and C# lambda expressions.
Learn to manage TypeScript parameters by passing a point object or a Point interface with x and y, and compare in-line annotations with interfaces.
Learn the cohesion principle by turning a point’s interface into a single class that bundles x, y and the draw and getDistance methods, keeping related behavior together.
Declare a point class in TypeScript, initialize with new, access fields via this, call draw and getDistance, and distinguish class versus object while compiling and running with tsc and node.
Learn how a TypeScript constructor initializes point objects, streamlining code, and how optional parameters let you create points with or without initial values.
Explore how TypeScript access modifiers—public, private, and protected—control outside access to class members, preventing coordinate changes by making fields private and reducing bugs by creating more predictable code.
TypeScript lets you prefix constructor parameters with an access modifier to auto-generate and initialize private or public fields, reducing repetitive assignments like this.x = x and this.y = y.
Learn how to expose private fields with properties in TypeScript by implementing getters and setters, validating input, and using camel casing with an underline prefix for clean access.
Move the point class to a separate file, export it, and import it in main.ts to demonstrate TypeScript modules in action. Compare TypeScript modules with Angular modules to organize applications.
Export a like component with private fields for likes and selection, and implement onClick to toggle state and update the count.
Explore the fundamentals of building applications with Angular and gain a basic understanding of components, templates, directives, and services.
Explore Angular’s component-based architecture, where each component encapsulates data, HTML, and logic for a view, and learn how modules group related components, with reusable rating components.
Learn how to create an Angular component, register it in a module, and render it in HTML with a custom selector, using the Component decorator and module declarations.
Generate a component with the Angular command line interface using ng g c; it creates a folder with ts, html, css, and spec files and updates app module declarations automatically.
Learn how Angular templates render data by binding a component title to the view with double curly braces and string interpolation, so changes automatically update the dom.
Learn to display a list of courses using Angular directives, including ngFor with an asterisk, backtick templates, let variables, and string interpolation, and introduce using a service to fetch data.
Learn how to extract HTTP logic into a reusable Angular service to fetch course lists, decouple components from endpoints, enable unit testing with mock services, and reuse across pages.
Dependency injection decouples a component from the courses service by injecting it via the constructor. Register the service as a provider in the app module to enable testable singleton.
Generate an Angular email service with the CLI using gg and s, creating a service and spec file that calls an http endpoint, and apply @Injectable for dependency injection.
Learn to display data on views, apply classes and styles to DOM elements, format data with pipes, and handle events from the DOM in Angular.
See how interpolation translates to property binding, bind DOM element properties with square brackets, and note one-way binding from component to the DOM in Angular.
Gain insight into Angular property binding and the need to bind DOM properties rather than HTML attributes, using square brackets and the [attr.colspan] syntax for HTML attributes like colspan.
Install bootstrap in the Angular app with npm --save, then import bootstrap.css in styles.css and use btn btn-primary for a blue button.
Discover how to use class binding to add or remove the active class based on a bound isActive property, while keeping base classes btn and btn-primary.
Discover style binding in Angular, a variation of property binding that applies inline styles using [style.property], setting the button background color to blue when is active is true, otherwise white.
Bind and handle DOM events in Angular using event binding with parentheses, call on save, access the dollar event object to inspect properties, and control event bubbling with stopPropagation.
Explore Angular event filtering by applying the .enter filter to a keyup event, so onKeyUp runs only when the user presses enter. Compare with the traditional keyCode 13 approach.
Explore how to retrieve input values in angular by using the event object or a template variable, and log the input, such as an email, to the console.
Learn how to implement two-way binding in Angular using the banana in a box syntax with ngModel, replacing repetitive code, and understand the need to import the forms module.
Explore how to format data with angular pipes, using built-in pipes for uppercase, lowercase, decimal, currency, and date, and chain pipes to control digits and display formats; preview custom pipes.
Create a custom summary pipe that implements the pipe transform interface and register it in the app module, using an optional limit with default 50 and a trailing ellipsis.
Build reusable Angular components by passing data, raising custom events, and applying styles, while mastering Shadow DOM and view encapsulation.
learn how to add property and event binding to a favorite component by defining input and output properties, enabling a reusable public API for host components.
Learn how to mark a field as an input property in Angular with the @Input decorator. Compare this with component metadata inputs and note risks from magic strings and refactoring.
Alias input properties in Angular to support dash-case markup and keep a stable API. Use the input decorator to alias is-favorite, preventing breaking changes during refactoring.
Learn to implement output properties in an Angular component by creating a change event with EventEmitter, binding it to a host method, and testing with console feedback.
Pass data with Angular events by emitting a boolean or object from a child component and handling it in the parent via the $event object, enabling compile-time checking.
Use alias on output properties to keep a component’s application interface stable when renaming events; rename change to click, ensuring the consumer still handles the event and logs remain intact.
Use inline templates for small components and external templates when the template grows beyond five lines. Angular CLI stores templates in files but bundles them with the main bundle.
Learn to apply styles to Angular components using three methods: styleUrls, styles, and inline template styles, and understand how last-wins and component-scoped styles determine the final look.
See how shadow dom provides style encapsulation and how Angular view encapsulation emulates it for browsers that lack native support. Understand the default emulated mode and its CSS post-processing.
Learn to build a reusable Angular panel component using ng-content with select for heading and body. Inject custom markup into two slots.
Learn how angular uses a ngContainer to render a bootstrap panel heading without extra markup by replacing the energy content with the heading element through a dot heading selector.
Explore ng4 in detail, review built-in directives for rendering lists, and cover other directives such as switch, class, and style, then build custom directives in Angular.
Show or hide content with the ngIf directive in Angular, using an asterisk, templates, and else blocks to display a course list or a no courses message.
Learn how to show and hide content in Angular using the hidden attribute and ngIf, with property binding and change detection. Choose ngIf or hidden for better performance.
Learn to implement tabbed views with the ngSwitchCase directive to render map and list content, using ngSwitch, ngSwitchCase, and dynamic content rendering.
Render a list of course objects by defining a courses array with id and name, and use ngFor to display each course while exposing index and even and odd values.
Learn how Angular's change detection responds to state changes by adding, removing, and updating courses in a list using ngFor, with real-time DOM updates.
Explore how ngFor tracks list items and how trackBy improves performance by using item IDs instead of object identity, preventing unnecessary DOM re-renders for large lists.
Explore how the leading asterisk rewrites ngIf with an ng template to conditionally render a course list, using courses.length checks and else blocks.
Learn to use the class directive (ngClass) with an object to bind multiple CSS classes in Angular, replacing repeated class bindings, and control icons with boolean expressions.
Explore using ngStyle to bind multiple CSS properties in Angular, toggling background, color, and font weight with canSave, and learn when to prefer CSS classes over inline styles.
Learn how to prevent null or undefined errors when accessing nested object properties in Angular by using the safe traversal operator, instead of only relying on ngIf.
Create and apply custom directives in Angular to format input values on focus and blur, using host listener, input properties, and a directive selector as an alias.
Learn to build Angular forms with text boxes, check boxes, radio buttons, and drop down lists, display validation errors next to inputs, and disable submit when the form is invalid.
Create a bootstrap form with first name and comment fields, apply bootstrap classes, and wire it into an Angular form to enable validation and accessibility through labels.
Discover how to build and validate forms in Angular using form control and form group, compare template driven and reactive forms, and understand validation states, errors, and unit testing.
Learn how ngModel powers template-driven forms in Angular by turning input fields into form controls with a name, then inspect states like dirty, pristine, valid, touched, and log changes.
Implement first name validation in Angular using the HTML5 required attribute and a bootstrap alert-danger message beside input. Render the alert only when the ngModel input is touched and invalid.
Explore how to implement specific HTML5-based validators in Angular, including minlength, maxlength, and pattern, and render separate dynamic error messages from the errors object for each input.
Learn to highlight invalid inputs in an Angular form by using the form control class with the invalid, dirty, and not touched states to apply a two-pixel red border.
Learn how to format Angular templates for forms by breaking attributes onto separate lines, listing validation attributes first, using ngModel with name, and clearly separating validation errors for readability.
Explore how ngForm automatically applies to form elements, creates a form group from form controls, and exposes the ngSubmit event along with valid, invalid, and value for json submission.
Learn how ngModelGroup structures complex, nested objects in forms by grouping contact fields, enabling whole-group validation and error display for seamless server-side data.
Master form control and form group in Angular, where ngmodel creates a form control, ngform auto-creates a form group and exposes submit, while ngmodel group handles subgroup forms.
Disable the submit button until the form is valid by binding the disabled property to f.valid, using NgForm directive and template variable F to check first-name validity against a regex.
Add a bootstrap styled checkbox to an Angular form with ngModel and a subscribe name, and inspect f.value as json to see true or false when toggled.
Learn to add a dynamic dropdown in an Angular form using ngModel, populate options from API, and use ngValue or value to send id or the object, including multiple selection.
Build a bootstrap radio button group with div class radio, label, and input type radio; bind with ngModel and render dynamically with ngFor for contact methods like email and phone.
Learn reactive forms in Angular by explicitly creating form controls in code for dynamic, server-driven forms, with validation, custom and asynchronous validation, and arrays of addable or removable objects.
Download the zip, add the signup form component to your project, and register it in app.module.ts. Render a bootstrap form with username and password fields.
Learn to build reactive forms in Angular by creating form group and form control objects, wiring them to username and password fields, and importing the ReactiveFormsModule.
Learn to add validation to reactive forms by attaching validator functions from the validators class to form controls, and simplify templates with a getter for username to display validation errors.
Learn to attach an array of validators to an Angular form control, including required and min length, and display specific error messages in the template.
Discover how to implement a custom validator in Angular forms with a static method cannot contain space, returning a validation error or null, and applying it in a signup form.
Learn how to implement an asynchronous username validator in Angular by simulating a server call, exploring non-blocking behavior with setTimeout, and understanding why async validators require a different signature.
Learn to implement asynchronous validation in Angular by building a promise-based async validator, wiring it into a form control, and displaying real-time username availability with a simulated server delay.
Display a loader image during async validators by using the form control's pending property to show a loader while the server checks username uniqueness, then observe it appear and disappear.
Learn to validate a login form on submit by sending credentials to server, using ng form with form group and form control, and set errors to show invalid login.
Explore nested form groups in angular by moving username and password into an account group and accessing them via account.username, using form group name and form control name directives.
Design and manage an array of form controls with a form array in Angular, enabling adding and removing topics in a course form.
Master Angular reactive forms with FormBuilder to create form groups, form arrays, and a nested contact group with email and phone, plus the required validator.
Recap building reactive forms with a form group, name control, contact subgroup, and topics array, then bind them in the template using form group name, form control name, and ng4.
Connect Angular applications to backend services using http and perform create, read, update, and delete operations. Develop a reusable data service for endpoints, handle errors, and enforce separation of concerns.
Use a fake HTTP service, jsonplaceholder, as the back end for an Angular app. Send create, update, and delete requests to endpoints like posts and users, with no data persistence.
Learn to fetch and display posts from Json placeholder in Angular app by wiring Http module, using http.get, subscribing to an observable, converting to json, and rendering with Ng4 directive.
Create a new post by sending an http post request with a json body from the title input. Subscribe to the response to extract the id and update posts array.
Learn to update data in Angular using patch to modify only specific post properties, compare patch and put, and target a specific post URL.
Implement delete functionality in an Angular app by sending an http delete request to the post endpoint. Remove the post from the local array using index and splice.
Use the on init lifecycle hook to fetch posts after a component initializes, keeping the constructor lightweight and avoiding http calls there.
Explain separation of concerns in Angular by extracting a dedicated posts service to handle backend calls, enabling single-point URL management and easily mockable unit tests.
Extract a service in Angular, register it in app.module, and move it to a services folder to support get, create, update, and delete posts via observables.
Master the handling of unexpected and expected errors in Angular apps by simulating server offline and network down scenarios, plus 404 not found and 400 bad request, with user messages.
Learn to handle unexpected errors in an Angular post component by using the subscribe error function in ngOnInit, showing a user alert or toast, and planning server-side logging.
Handle expected errors in an Angular post component by annotating the error as a response, using a subscribe error handler, and mapping 404 and 400 to user-friendly messages.
Explore throwing application-specific errors by moving http response handling from components to services, introducing app error and not found error, and using RxJS catch for domain errors.
Catch and throw application specific errors for bad requests in the post service, introducing a bad input class to distinguish 400 errors and surface server validation errors in the form.
Import RxJS operators and factory methods to handle errors in Angular applications, using catch on observables and the static throw method via the Observable class.
Learn to implement a global error handler in Angular by creating an app error handler, replacing the default handler with a provider, and rethrowing errors to trigger it.
Refactor the post service by extracting a private handleError method to centralize error handling for create, update, delete, and get posts, mapping 400 and 404 statuses.
Extract a reusable data service for http endpoints by creating a generic, inherited class that handles get all, create, update, and delete with a shared url.
Learn how to use the map operator in an Angular data service to transform http responses into arrays of objects, replacing response handling with direct json objects for cleaner components.
Explore optimistic vs pessimistic updates in Angular apps, updating the user interface immediately and rolling back on failure, with practical create and delete post examples driven by server responses.
Explore the difference between observables and promises in Angular, including why observables are lazy and require subscribe. See how operators like map, retry, and catch enable reactive programming.
Master routing and navigation in Angular by configuring routes, building single page applications, using route and query parameters, and performing programmatic navigation to add seamless app navigation.
Configure routes to map urls to components, insert a router outlet to display the active component, and add navigation links to enable in-app routing with Angular.
Configure angular routes with path and component to navigate between home, followers, and posts. Use username parameters, query strings, and a wildcard not-found route for dynamic profiles.
Learn how the router outlet renders the component for the current route using Angular router, displaying home, followers, posts, and not found page via app.html and the router module.
Replace href with router link to enable single-page navigation, reloading only content, and use property binding with an array for dynamic route parameters.
Use the router link active directive to dynamically apply css classes when a navigation link becomes active, ensuring the current page (posts or followers) is highlighted in the navbar.
Inject the activated route to access route parameters via the param map observable, subscribe to it, and fetch the user profile with a service.
Discover why route parameters are defined as observables and how subscribing to the route parameters observable updates the component during navigation.
Modify angular routes to support multiple parameters by adding a username to the path, and update followers page to render links that include follower id and username in the URL.
Explore adding optional query parameters to Angular routes, using page and order, and read them with activated route, param map, and query param map via snapshot or subscribe.
Subscribe to multiple observables by combining them with rxjs combineLatest, then subscribe to the resulting observable to access route parameters and optional query parameters for data retrieval.
learn to replace nested subscribes with map and switchMap to compose observables from http data, map responses, and produce a followers array without inner subscriptions.
Navigate programmatically in Angular by injecting the router service and calling navigate with a path and optional query parameters page and order, returning from profile to the followers list.
Chances are you have heard that Angular developers are in demand these days. And you are here to learn Angular fast.
There are tons of great courses out there for learning Angular. But most these courses are more than 20 hours long. If you're a busy developer and need to quickly pick up Angular, this is the ideal course for you.
This course contains 20 hours of content but you only need to watch the first 10 hours. The other 10 hours are recorded with an earlier version of Angular. You don't need to watch those videos.
So, in just 10 hours, you can learn all the essential Angular concepts! You can simply dedicate a weekend to this course and by the end of the weekend you'll have a good understanding of Angular and you'll be able to build real client apps with Angular.
More specifically, you'll learn about:
You don't need any prior knowledge of earlier versions of Angular. As long as you have some basic familiarity with HTML, CSS and JavaScript you can take this course and start learning Angular right now!
Every section includes a few bite-sized videos and concludes with a coding exercise to help you master what you learn in that section.
Reviewed by Todd Motto (Google Developer Expert):
Mosh has a fantastic teaching style, and just delivered the best online course I've seen in a long time. Mosh's approach to teaching and guiding makes no assumptions on existing Angular 1.x knowledge, but helps those who have to clarify new concepts. Mosh guides you through critical concepts slowly without skipping over details, and the course is extremely worth investing a few hours in, your understanding of Angular 2 will reach new levels. He fills all the gaps, presents impeccably well and the preparation was top notch, seriously can't recommend the course enough.
WHAT OTHER STUDENTS WHO HAVE TAKEN THIS COURSE SAY:
"Great course, even for seasoned developers. I'm a ReactJs developer using this to broaden my horizons!" -Tyler Markvluwer
"Mosh is a great instructor, he is very clear and concise and breaks down his examples into small "components" (drum roll please). Having never used Angular before, I'm really impressed at how easy it was to understand the concepts and even managed most of the examples without having to refer back to the lectures and that is in no small part due to Mosh's understanding of Angular and how well he explains everything. If you can't already tell, I'm really impressed Mosh" -Chris Graham
"It's the best angular2 video that i ever seen. It's all well explained and easy to understand. It's not need have angular1 knowledge. I'm happy because i've grown as a developer. Thanks" -Miguelangel Cabrera
"Very good step by step explainations. Focus on "why", then "how" instead of "type after me". Love it!" -Krysztof Gurniak
"As the absolute Angular newbie I was, I can recommend this course 100%." -Guillermo Aguyanes
"Mosh does a great job at explaining templates, directives, dependency injections and everything else. 10/10 would take his course again." -Rob
30-DAY FULL MONEY-BACK GUARANTEE
This course comes with a 30-day full money-back guarantee. Take the course, watch every lecture, and do the exercises, and if you feel like you haven't gained the confidence to build real-world apps with Angular, ask for a full refund within 30 days. All your money back, no questions asked.
ABOUT YOUR INSTRUCTOR
Mosh (Moshfegh) Hamedani is a software engineer with 17 years of professional experience. He is a Pluralsight author and a Udemy instructor with several best-selling courses with more than 130,000 students in 195 countries. His students describe him as passionate, pragmatic and motivational in his teaching.
So, if you're looking for an Angular course that quickly teaches you the absolute essentials, don't look further.
Enroll in the course now and you'll build your first Angular app within 10 minutes!