
Welcome to this course, it's really awesome to have you on board! Let me outline what you will learn in this course and what you can expect from it.
In this course, we'll build an entire Angular app. In this lecture, I'll walk you through what we build in greater detail. Let's start!
You obviously want to get the most out of this course. Let me share some useful hints on how you may achieve this!
As mentioned, an entire app is built throughout the course. Let's plan it from scratch in this lecture!
Let me introduce you to this module and what you're going to learn in it.
What is Angular? That's of course the core question - time to take a closer look.
We know what Angular is and that it's awesome. Let's now start creating an Angular project. In this lecture, I'll show you how that works.
We created an Angular project, let me now quickly walk you through it and explain how Angular apps actually start and work.
Components are important, we learned that. Time to dig a bit deeper and add a brand-new component to the project.
We have a component, let's now use its template to output content. The most interesting content is of course dynamic one. Let's dig deeper.
The template syntax we had a look at is super important. But we manipulate our template with some other tools, too: Directives. Let's take a closer look.
We covered a lot of important concepts, it's now time to make our components more re-usable. With custom property and event binding!
Handling user input is super important. Learn how to do that with ease in Angular apps in this lecture.
We're nearing the end. But not before diving into another super-important concept: Dependency injection and services. Learn what that is and how you may use it in this lecture.
We're creating a single-page-application but we still want to create the illusion of having multiple pages. Learn how that works in this lecture.
That was only a quick refresher. You can and should dig deeper. I'll tell you how to best do that.
Attached you find the source code for the module. In the article, you'll find useful links!
What is this module about? Let me introduce you to it!
Angular Material is a component library. That's good to know. Where do you find an overview over all these components then? How do you use them? This lecture answers these questions.
So we want to use Angular Material in our project. But how do we use it? In this lecture, I'll walk you through the entire setup process so that we can get started without issues!
Angular Material is actively developed, therefore staying up to date is crucial. In this lecture, I'll explain how you can ensure that you do.
Enough of the talking, time to get our hands dirty! In this lecture, we'll implement our first Angular Material component. It doesn't even hurt!
Why do we have to import Angular Material components the way we do?
With the first component created, it's time to think big, isn't it? Let's create the structure for the course app!
With the general structure created, let's dive right in and start our work on the signup form. So many Angular Material components that can be added!
Using components and Material styles is one thing but we also need to position our elements and components. We'll do this (indirectly) with Flexbox, hence it's time for a brief refresher!
We'll use Flexbox - but not directly. Instead, there's a useful third-party package that integrates nicely into the Angular environment: @angular/flex-layout. Let's take a closer look.
Our signup form is taking shape but we definitely need a submit button to make it really useful. Time to add and configure one in this lecture.
We got all these form inputs, that's great. But a great user experience is obviously super important. Learn how to use hints and validation error message to provide one.
Not all input should be text entered by the user. We also need a date - so let's fetch one!
Sometimes, you don't want to offer the entire date range to the user. Learn how to restrict the date picker in this lecture.
Let's add more material components. Time for the final touches on our signup form - with a checkbox!
Let's finish the form - with style of course!
Let me wrap this module up and summarize what we learned thus far.
Attached you find the source code for the module. In the article, you'll find useful links!
Let me introduce you to this module and to what you're going to learn in it.
Is there any web app without navigation? Probably not. Ours certainly needs one. In this lecture, we'll start adding some useful components to get one.
Let's continue working on the navigation components by working on the sidenav and toolbar (and letting them communicate).
Having a sidenav certainly is great but it also should be useful and not ugly. Let's style it!
Our page should of course be resonsive! Let's add responsiveness to it therefore!
What's a navigation without navigation items? Not worth that much I'd say, so let's add some items we can go to.
We got all the navigation code in the AppComponent template - let's split it up!
Besides the Auth and Training sections in our app, we also have a welcome screen. Let's fine-tune it.
We all love them: Tabs components. Let's add one to our trainings section.
Do you know this "Cards" look? You see it on a lot of pages (Udemy included). Let's add our own cards!
Our app is taking shape but in order to start a training, we need to be able to select one, right? Time to add a dropdown.
Our users are doing an exercise - let's provide some useful feedback regarding the remaining duration.
Exercises take time - would be nice to also show this to the user.
Sometimes, you just don't have time to finish an exercise. Let's allow the user to cancel but let's also ask first.
We got a dialog but how can be get data into it? Let's take a look.
Our users should have choices (in the dialog). Let's add two routes: Continue and exit.
Let me wrap this module up and summarize what we learned thus far.
Attached you find the source code for the module. In the article, you'll find useful links!
Let me introduce you to this module and to what you're going to learn in it.
When using Angular 6 - and therefore RxJS 6, there's an important change you need to make.
Don't skip this lecture!
Don't feel like using rxjs-compat? Go here!
Let's add some authentication (sign up + login) to our application!
With our "dummy" authentication in place, we should also tweak our routes a bit.
Some routes should only be available to authenticated users. Let's see what we can do about that.
The app is about exercises - let's prepare some exercise data therefore.
Let's connect more parts of our app with our data. For example the available exercises which we store in the Training service.
Providing available exercises is the first step, let's now ensure that users can actually select and start an exercise.
With the user being able to select an active training, let's now add functionality to actually display it.
Time to fine-tune the "New Training" component and add a form to allow for the selection of a new training.
Let's continue working on the active training and fully control it via a service.
Working with RxJS 6? Here's what you need to change.
We're allowing the user to complete or cancel and exercise, let's now also handles these events appropriately in the service.
We got loads of data that should be displayed - time to add the Angular Material Data Table which allows us to do just that.
Let's add some "Sorting" functionality to the data table.
Let's add some "Filtering" functionality to the data table.
Want to dive deeper into filtering? Here you go!
Let's add some "Pagination" functionality to the data table.
Let me wrap this module up and summarize what we learned thus far.
Attached you find the source code for the module. In the article, you'll find useful links!
Let me introduce you to this module and to what you're going to learn in it.
In this module, we'll use Firebase by using Angularfire. What is Firebase though?
We'll use Firebase. Let's get started and create a Firebase project.
Now that we know what Firebase is, let's take a closer look at Angularfire - the package we'll use to connect to Firebase.
Angularfire embraces RxJS Observables. Let's dive into a brief refresher on that then.
Enough of the theory, let's dive in and see some observables in action!
You learned how to adjust the code to RxJS 6 - here's one other adjustment you'll need to make.
Learn to use snapshot changes with angularfire to access document IDs and data, map results to an exercise model with RxJS, and enable real-time updates in Angular apps.
Time for some code adjustments!
We got all these ongoing subscriptions - what's actually happening behind the scenes? Let's see how Firebase manages them for us.
Fetching data works, let's now see how we can actually store data on the server.
With finished exercises stored on the server, let's now connect our data table to these exercises on Firestore.
We worked with collection - let me also show you how you may directly work with single documents.
We're working with data - why don't we also use Firebase for authentication then? Good question, right? Let's start!
Users are now able to sign up, time for the logical next step: Login.
How does authentication in SPAs actually work? Let's take a closer look.
With authentication added, we should finally also protect our server-side. Time to add some Firestore Security Rules.
If we log out, we'll get an error. Let's manage our Firestore subscriptions correctly.
A lot was achieved, let's finish the module by reorganizing our code.
Let me summarize this module and what we learned thus far.
Attached you find the source code for the module. In the article, you'll find useful links!
Let me introduce you to this module and to what you're going to learn in it.
Since we're talking about optimizations, let's work on the app style and the general error handling we're doing.
Waiting for content to load is annoying and can even be confusing. Time to improve UX by adding a spinner.
A snackbar is a great tool to show notifications. Let's implement one - in a re-usable way.
Errors happen! Even more important to handle them with grace then!
Now that the app is growing, we can re-organize our code into different modules.
Now that we split our app up a bit, let's work on the subscriptions and improve them.
There are some shared functionalities in our app - time for a dedicated Angular module.
With all these new modules, we can now also split up our routes.
With routes split up, we can also load a module (the training module) lazily. Let's do that!
With lazy loading implemented, there's a better place for the Auth Guard.
Let me summarize this module and what we learned thus far.
Attached you find the source code for the module. In the article, you'll find useful links!
Let me introduce you to this module and to what you're going to learn in it.
NgRx builds up on Redux. But what is that actually? Which problem does it solve? Why do we need it? Let's take a closer look.
The best way to learn NgRx is to simply use it. Here's a first example!
We got a first example, time for the real implementation. Let's dive into multiple reducers and actions.
NgRx is all about actions and state. Managing is one thing but we also need to dispatch actions and get state slices. This lecture dives into these topics.
If you watch closely, you'll see different RxJS import syntaxes as well as some error messages in my IDE. Where's that coming from?
We spent some time on the basics, let's now use all the knowledge to build our second reducer. The auth reducer.
Having a reducer and feature state is nice but not worth that much if we don't use it. Time to subscribe to the store!
With the auth part finished, it's time for the next app feature: The Training part. This will be lazy loaded and also feature actions with payloads.
Just as we can load feature modules lazily, we can load state lazily. Learn how it works in this lecture.
The Training state is taking shape - time to also dispatch some actions so that we can see some changes in our app.
With the actions dispatched, the state is changing. Let's consume it by adding some selectors.
Some values only need to be selected once. Learn how that would work in this lecture.
We're already using the data table, let's now connect it to our NgRx state!
With all these changes, it's about time to do some clean up. Let's start!
Whoops, there's a tiny logical error in our app. Let's fix it.
Let me wrap this module up and summarize what we learned thus far!
Attached you find the source code for the module. In the article, you'll find useful links!
Deploying Angular apps is not difficult. Here's the quick walkthrough!
We're already using Firebase, so why don't we use their hosting? Learn how to deploy your Angular app to Firebase Hosting in minutes.
Attached you find the source code for the module. In the article, you'll find useful links!
Let me introduce you to this module and to what you'll learn in it.
What's inside an Angular Material theme, which concept does it follow? This lecture answers these questions.
Got an Angular CLI 6 project? Here you go!
With the basics set, it's time to leave the world of pre-defined themes and create our own one!
Attached you find the source code for the module. In the article, you'll find useful links!
Angular is an amazing frontend JavaScript & TypeScript framework with which you can build powerful web applications.
There are many courses that dive deeply into Angular but sometimes you just want to build an entire app and see how it all works in practice. And you want to use all these great third-party packages that can add a lot of awesome functionalities to your Angular app!
This course covers exactly that!
We'll build an entire, realistic app which looks absolutely beautiful, uses Google's Material Design and is extremely fast! Thanks to Firebase and Angularfire, we'll add real-time database functionalities and see our updates almost before we make them!
Behind the scenes, NgRx will be used - a Redux-inspired state management solution that can greatly enhance your Angular app.
What are you waiting for, this is what you'll get in detail:
A brief refresher on Angular, just in case you forgot how it works (or never learned it)
A detailed introduction into Angular Material, its docs and its usage
A realistic app that uses many Angular Material components
Examples for components like Datepickers, Sidenavs or the Material Data Table (incl. sorting, filtering and live updating!)
A real-time database connection powered by Firebase (using Firestore) and Angularfire
A better understanding of RxJS observables
State-of-the-art state management with the help of NgRx
And so much more!
This course is for you if you want to practice Angular, want to see it in action or want to learn it with the help of a 100% practical project!
Please note that this course was recorded with an older version of Angular & Angular Material. The code shown in the videos might not always work with the latest versions of these packages. The general concepts & solution steps still apply, of course.