
This video introduces me(your instructor) and then talks about the course overview and the things that we're going to cover as a part of this course.
This video gives you an understanding of single-page applications and the behaviors exhibited by them. In doing so, we compare that with the behavior exhibited by a normal website.
We also examine a [normal website](https://mvmtwatches.com) and a [single page application](http://angular.io) to understand things in a better way.
This video elaborates on the reasons for using Angular as the front-end ecosystem for building Single Page Applications.
Angular is an ecosystem and consists of the following:
Angular
Protractor
Forms
PWA
Augury
Language
Services
Router
Elements
CDK
Compiler
Material
Universal
Karma
Labs
I18N
HTTP
Animations
CLI
Angular can be used to build:
Web Apps out of the box.
Progressive Web Apps with the @angular/pwa schematic
Hybrid Mobile Apps for iOS and Android with Ionic
Hybrid Mobile Apps for iOS and Android with NativeScript
Desktop Apps with Electron.JS
Plus Angular has features like:
Dependency Injection
Lazy Loading
Libraries
Performance
Templates
All these features make Angular a superheroic end to end ecosystem of tools you'll ever need.
In this video, we talk about setting up the development environment that we'll need to build Single Page Applications with Angular.
You can find the instructions in the attached PDF file.
This video will give you a brief understanding of how to logically think of an Angular App. Every Angular app can be considered as a tree of components.
We'll create our first Angular App in this video using AngularCLI.
This video talks about TypeScript and it's benefits.
We also have a look at the concepts that we're going to go over in this section:
Variable declarations(let and const)
Static types
Spread
Destructure
Rest
Classes
Interfaces
Generics
Arrow Functions
Modules and Namespaces
fetch
async/await
etc.
In this video, we're going to set up the development environment to write TypeScript and then get it validated and compiled by the TypeScript Compiler.
You can optionally use StackBlitz for the same.
We'll discuss var, the issues with it, and how "let" and const fix them.
In this video, we'll talk about primitive data types like number, boolean, string, null, and undefined.
I'll explain the following types to you:
void
Array<type>
Tuple
Objects
enum
any(special)
In this video, I talk about the Spead and the Backticks operator.
The Spread Operator:
Spreads the elements of array or object
Used for merging multiple arrays/objects into one flat array/object
Is denoted by triple dot (...)
The Backticks Operator is:
Used to wrap around stings.
Used with ${variable} to append the value of a variable to the string.
Stringifies objects and arrays.
We discuss the destructure and the rest parameter operators in this video.
Destructure:
Breaks up the structure of an object or array
Plucking elements from an object or array
Variable wrapped in “{ }” for objects, and “[ ]” for arrays
Generally used in import statements
Rest:
Allows us to represent an indefinite number of arguments as an array.
Can only be used as a function's last parameter
The last parameter can be prefixed with …
Remaining arguments to the function are placed within a "standard" javascript array.
In this video, I talk about classes in TypeScript.
Classes in Typescript are same as those in Java or C#
It is a blueprint for creating objects
It encapsulates data and logic
It contains properties, getters/setters, methods, and a constructor.
Properties can have access modifiers such as public, private, and protected.
Supports inheritance with the keyword super
Can implement interfaces
Can be used to enforce types
In this video, I'm going to tell you about interfaces.
I'll cover the following aspects of an interface:
A way of defining contracts
Used in TypeScript for implementing structural subtyping of objects
Interfaces can extend other interfaces
Can be used to set properties as optional or read-only
Can be used to enforce contracts for classes
Does not have a runtime representation
In this video, I'm going to explain Arrow Functions:
An arrow function is an alternate way of declaring functions
AKA fat arrow or Lambda functions
Defined as:
let myFunc = () => {};
Key features:
Lexically captures the meaning of “this”
Lexically captures the meaning of “arguments”
They are non-constructable (i.e. cannot be invoked with the keyword “new”)
Especially useful in typescript to access the member variables through callbacks and promises
JavaScript wasn’t built with modularity in mind.
In this video, I'm going to tell you about ES6 or ECMAScript 2015 Modules that were introduced as a generalized module system to overcome issues with IIFE, CommonJS, and AMD constructs.
Two important things to keep in mind as far as JavaScript Modules are concerned is:
Characterized by the use of import/export.
script is included with a type=”module”.
In this video I talk about the fetch API which:
Provides an interface for fetching resources.
Provides more powerful and flexible feature set as compared to XMLHttpRequest
Returns a Promise.
I'll talk about the async/await syntactic sugar that was introduced in ES6.
async/await makes our code more readable and shorter.
It's used with Promises. A function that returns a Promise can be called with the await keyword. A function in which the function returning the Promise is awaited must then be declared with the async keyword.
It doesn't make our code run synchronously though.
In this video, we talk about the things that we're going to cover as a part of this Module.
So we'll cover the following topics:
What are Decorators?
Different Decorators in Angular
Angular Modules and the @NgModule Decorator
@NgModule Decorator Metadata
declarations
imports
exports
providers
bootstrap
entryComponents
Application Bootstrap Mechanism in Angular
In this video, I'm going to briefly talk about Decorators and a few decorators that we use quite a log in Angular.
Decorators are:
Stage 2 proposal for JavaScript
Experimental feature of TypeScript.
Functions or Higher-Order Function if they accept an Argument.
Used with @ sign prefixed.
Angular classes & properties in them are defined by the decorators that sit on them.
In Angular, almost everything is essentially a class. But these decorators transform them into a module, component, service, pipe or directive.
Following are a few commonly used Decorators used in Angular
@NgModule
@Component
@Directive
@Pipe
@Injectable
@Inject
@Input
@Output
@ViewChild
@ViewChildren
@ContentChild
@ContentChildren
@HostListener
@HostBinding
This is just a very brief overview of Decorators in Angular. We'll talk in-depth about them in a later section of this course.
I'll briefly talk about Angular Modules and how we can create Angular Modules in this video.
Angular Modules are:
Cohesive block of code dedicated to an application domain, a workflow, or a closely related set of capabilities
Angular apps are modular.
Angular has its own modularity system called NgModules.
Angular Apps have at least one NgModule class, i.e. the root module, conventionally named AppModule.
Modules are a great way to organize an application and extend it with capabilities from external libraries.
Many Angular libraries are modules (such as FormsModule, HttpClientModule, and RouterModule).
Many third-party libraries are available as NgModules (such as AngularMaterial, Ionic, AngularFire).
We're going to have a look at the significance of the declarations array in the @NgModule decorator.
declarations accept a set of declarables to be registered on the Angular Module.
Doesn’t accept:
@NgModule
@Injectable
A non-angular class
Declarable registered on any other Angular Module
A declarable used in an Angular Module without adding it here would result in an error.
We're also going to have a look at the errors the Angular runtime would throw in many different cases and how we can fix those errors.
In this video, we're going to talk about the imports and the exports array.
The imports array is used to have access to the public API of an Angular Module(ModuleA) into our Angular Module(ModuleB). This public API would generally be Components, Directives, and Pipes (AKA declarables) registered on that Module(ModuleA) or declarables registered by an Angular Module (ModuleC) that was imported by ModuleA.
The exports array is used to export declarables from an Angular Module(ModuleA) to the modules that import ModuleA.
I talk about the significance of the providers array, the bootstrap array and the entryComponents array in this video.
providers can be used to register an object, a class, a value(basically something) on to an Angular Module's injector. That's what informs the injector that we can then inject this something as a dependency on-to a declarable or service or any specific building block in our Angular App. We'll have a look at them in a later section of this course when we learn about Dependency Injection.
bootstrap array instructs Angular to bootstrap the listed components as soon as it bootstraps the Angular Module. Adding a Component to the bootstrap array also adds it to the entryComponents array.
entryComponents tells Angular that we might want to create components and inject them on to the DOM at runtime. We'll learn more about dynamic component loading and entryComponents in the next section of this course on Components.
You'll see how an Angular Application bootstraps in this video. Every Angular application can be configured to have a main file that acts as an entry point for it. There's also an application index that acts as some sort of an entry point for templates.
These two files are responsible for instantiating the App and rendering it on to the browser. You'll see how it does that in this video.
In this video, we talk about the things that we're going to cover as a part of this Module.
So we'll cover the following topics:
Components and the @Component Decorator
Creating an Angular Component
@Component Decorator Metadata
View Encapsulation
Component Bindings
Component Lifecycle Hooks
Component Interaction Techniques
View Queries
Change Detection Mechanism in Angular
I've given an analogy about Components in order to properly understand them in this video. I also talk about Angular Apps as a tree of Components. This video will get you started in your understanding of Angular Components.
In this video, I'll show you how you can create an Angular Component using Angular CLI. Running the ng g c component-name does that for you. It also does quite a lot of other things which we'll cover as a part of this video.
I'll also show you how you can create an Angular Component using StackBlitz.
We'll discuss about all the metadata properties that the @Component Decorator can have. These properties are:
selector: css selector that identifies this component in a template
template: inline-defined template for the view
templateUrl: url to an external file containing a template for the view
styles: inline-defined styles to be applied to this component's view
styleUrls: list of urls to stylesheets to be applied to this component's view
providers: - list of providers available to this component and its children
animations: list of animations of this component
encapsulation: style encapsulation to be used by this component
changeDetection: change detection strategy used by this component
We'll discuss in detail about these properties.
encapsulation can be used to set the view encapsulation configuration of a Component. It's a bit bigger topic. So'll cover that as a part of the next video. And you would be able to better understand changeDetection when we've covered Angular's Component Lifecycle hooks in a later video in this section.
In this video, I explain all the modes for View Encapsulation in Angular. So I'll talk about:
Emulated: Default. Inherit global styles. Local styles are private.
Native: Deprecated in favor of ShadowDom.
ShadowDom: Shadow DOM used to encapsulate styles. Global styles not inherited in Component. Local styles are private.
None: Global styles are inherited. Local styles bleed out and are not private
In this video, I talk about the different types of bindings that we have in Angular. I also show you the different ways in which the string interpolation syntax works and the direction of data flow in case you use the string interpolation syntax.
I also mention that there's a way in which you should not use the string interpolation syntax in order to avoid any memory leaks.
I talk about the property binding syntax that we have in Angular. I also show you the different ways in which the property binding syntax can be used and the direction of data flow in case you use the property binding syntax. Like the pervious video, we also see how to use the property binding syntax in the most efficient way.
Event binding is a way to pass data from the Component's template to the Component's TypeScript class. In this video, I show you the syntax for that and the different ways in which you can use the Event Binding Syntax.
We need to properly understand the @Input and @Output property decorators that can be defined on a Component Class. We can then properly understand the two way data binding syntax in Angular. So that's exactly what we do in this video.
This video also explains how you can share data from a Parent Component to a Child Component and from a Child Component to a Parent Component.
Now that we've understood the property binding syntax, the event binding syntax; and the @Input and @Output property decoratros, we now have all it takes to properly understand the two-way data binding syntax in Angular.
So that's exactly what we'll do. We will also try and understand how the famous ngModel directive works in the process.
In this vidoe, I explain about the attribute binding syntax. There are times when most of the HTML Attributes don't cross over properly as JavaScript HTMLElement Properties. So in order to set them, we use the attribute binding syntax.
You'll see a few example of how we use it in this video.
There are cases when we might want to toggle CSS classes on HTML Elements. Using the property binding syntax or the attribute binding syntax generally overrides the pre-applied CSS styles. So in order to just keep them intact and apply additional CSS classes on these elements, we use the class binding syntax.
In this video, I'll show you how you can use it.
In this final video on Angular Component bindings, I show you how you can use the style binding syntax to apply styles to HTML elements on the fly conditionally and unconditionally.
In this video, I talk about Component and Directive Lifecycle Hooks. Lifecycle Hooks is a Concept that gets applied to both Components as well as Directives.
Components are basically a special type of Directives. They are the only type of Directives with a template.
So we discuss:
What are these life-cycle hooks?
What methods run on a specific key life moment in the lifecycle of a Component/Directive?
What's the sequence of execution of these life-cycle hook methods?
How frequently do they run?
During our discussion, we also talked about the scenarios during which Angular performs Change Detection and what is Content Projection.
In this video, we:
Talk about different use-cases for using the lifecycle hook methods.
See how we can use all the lifecycle hook methods.
Discuss in-depth about using the ngOnInit for initializing properties on our Components or Directives; and the ngOnDestroy to write the clean-up logic for timeouts/intervals, event listeners, and observables.
Understand the importance of implementing the lifecycle hook interfaces.
In this video, I talk about the @ViewChild View Query. We can get references to the elements that we have in the view, using the @ViewChild decorator. And once we do have these element references, then we can do quite a lot of things.
Consider an input field in your template that you want to highlight and focus on once the page loads. You can have a reference to it in the Component Class and then achieve it using the @ViewChild decorator. That's exactly what we'll be doing in this video.
We'll also see how we can access a Child Component from a Parent Component using the @ViewChild decorator thereby also leveraging it as a Component Communication technique.
Throughout this video, we'll have a look at using the @ViewChild decorator with several examples. We'll use the:
selector property by specifying a Component Type, a template ref. variable, and TemplateRef.
read property from the optional options objects to read different tokens from the @ViewChild like a Component, ElementRef, ViewContainerRef, and TemplateRef.
static property which is a boolean, and is false by default, and in what case we can set it to true.
In this video, I talk about the @ViewChildren View Query. We can get references to the multiple elements that we have in the view, using the @ViewChildren decorator. And once we do have these element references, then we can do quite a lot of things.
The @ViewChildren decorator is almost similar to the @ViewChild decorator with the difference that it returns a QueryList<T>. You can think of a QueryList<T> as a wrapper on the top of a regular JavaScript Array.
We can do almost everything with @ViewChildren that we can do with @ViewChild.
Throughout this video, we'll have a look at using the @ViewChildren decorator with several examples. We'll use the:
selector property by specifying a Component Type, a template ref. variable, and TemplateRef.
read property from the optional options objects to read different tokens from the @ViewChild like a Component, ElementRef, ViewContainerRef, and TemplateRef.
In this video, I talk about the @ContentChild and the @ContentChildren View Queries. We can get references to the multiple elements that we have as a part of the project content, using the @ContentChild and the @ContentChildren View Queries. And once we do have these element references, then we can do quite a lot of things.
The @ContentChild and the @ContentChildren decorators are almost similar to the @ViewChild and the @ViewChildren decorator with the difference that it can be used for the projected content.
Throughout this video, we'll have a look at using the @ContentChild and the @ContentChildren decorator with several examples.
We'll also see the different properties like:
selector property by specifying a Component Type, a template ref. variable, and TemplateRef.
read property from the optional options objects to read different tokens from the @ContentChild and the @ContentChildren decorators like a Component, ElementRef, ViewContainerRef, and TemplateRef.
Angular is one of the most popular front-end frameworks for building single-page applications or web apps with HTML, CSS, and TypeScript. So basically, if you want to become a successful front-end or a full-stack developer, that get hired, you need to have Angular as a skill under your belt.
Learning Angular 2 or Angular 4/5/6/7/8/9/10/11/12/13/14 or Angular 15 or simply Angular(as the Angular team likes to call it) on your own can be confusing or frustrating at times. It might require you to browse through several tutorials, articles, YouTube videos, etc, and get a grip on it.
If you want to get rid of going through all that trouble and just focus on learning Angular, this is THE course for you. In this course, I'll take you through an exciting journey of learning Angular concepts through fun and easy to understand coding examples.
______________________________________________________________________________________________________________________________
As the course progresses, you'll get familiar with:
Single Page Applications and why should we use Angular to build them
TypeScript and ESNext( ECMAScript 2015 or ES6 and later versions of it)
Angular Modules, the @NgModule Decorator and Angular Application Bootstrap Mechanism
Angular Components, the @Component Decorator, component communication and LifeCycle Hooks
Directives, the @Directive Decorator, and creating custom structural and attribute directives.
Dependency Injection In Angular, the @Injectable Decorator, Services, RxJS Observables and making AJAX Calls to REST APIs
Routing, Child Routing, and Route Guards
Pipes the @Pipe Decorator, and creating custom pure pipes and impure pipes.
Template Driven Forms and Reactive Forms in Angular
Custom Decorators
Using third-party libraries like Angular Material, Firebase, etc.
Section 1 - Single Page Applications, Why Angular and Project Setup:
Course Overview
Introduction to SPA
What do we need Angular for?
Setting up the Development Environment.
Angular Application Architecture
Angular CLI
Project Structure
Section 2 - TypeScript and ESNext:
What is TypeScript
Basic Types in TypeScript
Variable Declarations using Let and Const
Spread and Destructure.
Classes
Interfaces
Arrow Functions
Modules
fetch API
async / await
Angular Modules and Angular Components
@NgModule
Angular Application Bootstrap Mechanism
@Component
Data/Property Binding
View Encapsulation
Inter-component Communication (@Input/@Output, Event Emitter)
Template variables (ViewChild/ContentChild)
Content Projection(ng-content)
Templates – will be covered as part of components
Metadata – basic overview
Lifecycle hooks
Order and triggering of each hook
Hooks specific to Components and Decorators
Dependency Injection(Providers)
Dependency Injection - Why?
Dependency Injection - As a design pattern
Dependency Injection - As a framework
Dependency Injection - What?
Injectors and Providers
Hierarchical Dependency Injection
Routing
Child routes
Route params
Route Guards - CanActivate, CanActivateChild, CanDeactivate, Resolve, CanLoad
Services(@Injectable)
Service as a singleton, data sharing.
HttpClient, HttpHeaders, HttpParams
Observables with Operators like the map, subscribe, catch, retry etc
Subjects
Sharing data across Components using Service
Directives(@Directive)
Built-In Structural Directives - NgFor, NgIf, NgSwitch
Built-In Attribute Directives - NgClass, NgStyle, NgNonBindable
Building a Custom Structural Directive
Building a Custom Attribute Directive
Pipes(@Pipe)
Build-in Pipes
Building Custom Pipes
Pure and Impure Pipe
Forms
Template Driven Forms
Reactive forms
Form Validations
Custom Synchronous form validations
Custom Asynchronous form validations
Custom Decorators
Metadata – deep dive
Building Custom Class Decorator
Building Custom Property Decorator
Integrating with Third-Party Libraries
Material Design Bootstrap
Angular Material
Firebase
______________________________________________________________________________________________________________________________
By the end of this course, you'll be able to:
Build end-to-end Single Page Apps in Angular on your own
Understand and fix common compile-time and run-time errors in minutes
Understand and implement clean and maintainable code like a professional
Apply best practices when building Angular apps
We'll always start with the basics and go from there. Right from the beginning of the second module, you'll jump in and build your first Angular app within minutes.
Angular 2 and all the later versions of Angular has been written in TypeScript. So, before getting started with Angular in section 3, you'll learn the fundamentals of TypeScript and object-oriented programming in section 2 to better understand and appreciate this powerful framework.
Over the next 15 hours, you'll learn the essentials of building Single Page Applications(SPAs) with Angular:
Displaying data and handling DOM events
Building reusable components
Manipulating the DOM using directives(both Structural and Attribute)
Transforming data using pipes
Building template-driven and reactive forms
Consuming REST APIs using HTTP services
Handling HTTP errors properly
Using Reactive Extensions and Observables
Adding routing and navigation to adhere to the basics of a Single Page Application
Building real-time, server-less apps with Firebase
Building beautiful UIs using Angular Material, and Material Design Bootstrap
So, if you're a busy developer with limited time and want to quickly learn how to build SPAs with Angular, you're at the right place.
All these topics are covered by over 15 hours of high-quality content. Taking this course is equivalent to going through hundreds of articles, tutorials, and videos on the web! Just that the content is laid out to cover all that you'll get to know during all that time! Once you go through the course(or just the preview videos), you'll know that the topics are explained in a clear and concise manner which is going to save you a lot of your precious time! This course is also packed with techniques and tips, that you can only learn from a seasoned developer. You'll see how we'll create a brand new Angular project with Angular CLI and build an application from A to Z, step-by-step.
You'll also get to know ways to build a real-time SPA with Angular, Firebase, and Bootstrap. This application exhibits patterns that you see in a lot of real-world applications:
Master/detail
CRUD operations
Interaction with a data store
Forms with custom validation
And a lot more...!
PREREQUISITES
You don't need familiarity with TypeScript or any previous versions of Angular. You're going to learn both TypeScript and Angular from scratch in this course.
______________________________________________________________________________________________________________________________
WHAT OTHER STUDENTS WHO HAVE TAKEN THIS COURSE SAY:
"Explanation is crisp.. instructor is comfortable with the topic...examples used are good and easy to understand...various aspects of the code are explained...using MDB and material for angular both are covered for creating UI components...just only the full screen is shown at all times.. which makes things appear very small... screen highlight or zoom is not used while recording video.. rest all is great.. for learning angular" - Maneesh Parihar
"內容詳細" - Huang JiaLin
"That's a very comprehensive course on Angular that also teaches Angular Material and Firebase @Siddharth Ajmera: Thanks for this great course! As with so many other courses I would love to see some Summaries or cheatsheets as PDFs or foils and also I'd appreciate to see more schematics, graphs, and sketches." - He
"講解詳細" -曾玟凱
"This course was perfect for beginners like me. I learned so much from it. Thanks a lot Siddharth for such a good course. Looking forward to more courses from you. Can you please add a section that demonstrates building of an application end to end?" - ankita daur
"Siddarth explained the course in a very simple manner and with simple examples. Would love more indepth on Angular Material and Firebase from him. Great course." - Kumar
"There is so much information provided in this course. I was looking for custom Decorators and use cases where in they could be implemented to make the code cleaner. I found perfect examples on similar topics in this training. This course is great for beginners." - Kewal Shah
______________________________________________________________________________________________________________________________
30-DAY FULL MONEY-BACK GUARANTEE
This course comes with a 30-day full money-back guarantee. Take the course, watch every lecture, follow along while coding, and if you are not happy for any reason, contact Udemy for a full refund within the first 30 days of your enrolment. All your money back, no questions asked.
ABOUT YOUR INSTRUCTOR
Siddharth is a software engineer with more than 6 years of professional experience. He is the author of this course with more than 60,000 students in 192 countries. He has done his Bachelor of Engineering in Computer Science. He has worked on several Modern Web Applications. Chatbots, and frameworks. He writes articles about Angular, and Chatbots on Medium.
What are the requirements?
Basic familiarity with HTML, CSS, and JavaScript
NO knowledge of AngularJS or Angular is required
What am I going to get from this course?
Establish yourself as a skilled professional developer
Build real-world Angular applications on your own
Troubleshoot common Angular errors
Master the best practices
Write clean and elegant code like a professional developer
What is the target audience?
Developers who want to upgrade their skills and get better job opportunities
Front-end developers who want to stay up-to-date with the latest technology
Back-end developers who want to learn front-end development and become full-stack developers
Hobbyist developers who are passionate about working with new frameworks