Welcome to the Angular 18 Full Course! In this tutorial, we will go through everything you need to know about Angular, from the very basics to more advanced topics. By the end of this course, you will have all the knowledge and skills needed to become an Angular developer, from zero to hero!
Before we start, let’s make sure you have everything you need to follow along with this tutorial. You will need a computer with Node.js and npm installed, as well as a code editor like Visual Studio Code. If you haven’t installed Node.js and npm yet, you can do so by visiting the official website and following the instructions there. Once you have everything set up, you’re ready to dive into Angular!
Getting Started with Angular
Angular is a popular front-end framework for building dynamic web applications. It is maintained by Google and offers a rich set of features that make it easy to develop robust, responsive, and scalable applications. To get started with Angular, we need to begin by installing the Angular CLI (Command Line Interface).
To install the Angular CLI, open a terminal window and run the following command:
npm install -g @angular/cli
This will install the Angular CLI globally on your system, allowing you to create, build, and run Angular applications from the command line. Once the installation is complete, you can create a new Angular project by running the following command:
ng new my-app
Replace "my-app" with the name of your project. This command will create a new Angular project in a directory with the same name. Next, navigate to the project directory by running:
cd my-app
Now that you’re in your project directory, you can start the development server by running:
ng serve
This will compile your Angular application and start a development server at http://localhost:4200
. Open this URL in your web browser, and you should see the default Angular welcome page. Congratulations, you’ve successfully set up your first Angular application!
Components and Modules
In Angular, applications are built using components, which are the building blocks of the user interface. Components encapsulate the HTML, CSS, and functionality of a specific part of the application. To create a new component, use the Angular CLI by running the following command:
ng generate component my-component
Replace "my-component" with the name of your component. This command will generate a new component with its own template, styles, and TypeScript file. You can then include this component in other parts of your application by adding the component selector to the HTML file where you want to use it.
Modules in Angular are used to organize the application into logical units. Each Angular application has at least one root module, which is responsible for bootstrapping the application. You can create a new module using the Angular CLI by running the following command:
ng generate module my-module
Replace "my-module" with the name of your module. This command will generate a new module file where you can import and declare components, directives, pipes, and services that belong to that module.
Services and Dependency Injection
Services are used in Angular to share data and functionality across different parts of the application. Services are typically singleton instances that are injected into components, modules, and other services using Angular’s dependency injection system.
To create a new service, use the Angular CLI by running the following command:
ng generate service my-service
Replace "my-service" with the name of your service. This command will generate a new service file with the necessary boilerplate code. You can then use this service to perform tasks like fetching data from an API, handling user authentication, or storing state in the application.
To inject a service into a component, import the service class at the top of the component TypeScript file and add it to the component’s constructor:
import { MyService } from './my-service.service';
constructor(private myService: MyService) { }
This will inject an instance of the service into the component, allowing you to access its properties and methods.
Routing and Navigation
In Angular, routing is used to navigate between different parts of the application. Angular’s router module provides a powerful way to define and manage routes in the application.
To set up routing in your Angular application, first import the RouterModule and Routes classes from @angular/router
and define an array of routes in a separate file:
import { RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{ path: 'home', component: HomeComponent },
{ path: 'about', component: AboutComponent },
{ path: 'contact', component: ContactComponent }
];
Next, import the RouterModule and routes array in the root module file and configure the routes using the forRoot
method:
import { RouterModule } from '@angular/router';
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppModule { }
Now, you can navigate between different routes in the application using the Angular router module. To create a link to a route in an HTML template, use the routerLink
directive:
<a routerLink="/home">Home</a>
<a routerLink="/about">About</a>
<a routerLink="/contact">Contact</a>
Forms and Form Validation
Angular provides powerful tools for working with forms and form validation in applications. Angular’s reactive forms module allows you to create and manage complex forms with ease.
To create a new form in Angular, import the ReactiveFormsModule and FormsModule modules from @angular/forms
in the root module file:
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
@NgModule({
imports: [
ReactiveFormsModule,
FormsModule
]
})
export class AppModule { }
Next, create a new form in a component by importing the FormBuilder service and creating an instance of the FormGroup class:
import { FormBuilder, FormGroup } from '@angular/forms';
constructor(private formBuilder: FormBuilder) {
this.myForm = this.formBuilder.group({
name: '',
email: '',
message: ''
});
}
You can then bind the form controls to input fields in the template using the formControlName
directive:
<form [formGroup]="myForm" (ngSubmit)="onSubmit()">
<input type="text" formControlName="name">
<input type="email" formControlName="email">
<textarea formControlName="message"></textarea>
<button type="submit">Submit</button>
</form>
To add form validation, you can use the Validators class from @angular/forms
to define validation rules for each form control:
import { Validators } from '@angular/forms';
this.myForm = this.formBuilder.group({
name: ['', Validators.required],
email: ['', [Validators.required, Validators.email]],
message: ['', Validators.maxLength(100)]
});
This will ensure that the form inputs are validated according to the specified rules when the form is submitted.
HTTP Client and Observables
Angular’s HttpClient module provides a convenient way to make HTTP requests to a server and handle responses using observables. Observables are used in Angular to handle asynchronous data streams and perform operations like fetching data, handling user input, and updating the UI in real-time.
To make an HTTP request in Angular, import the HttpClient and HttpHeaders classes from @angular/common/http
in a service file:
import { HttpClient, HttpHeaders } from '@angular/common/http';
constructor(private http: HttpClient) { }
getPosts() {
return this.http.get('https://jsonplaceholder.typicode.com/posts');
}
This service method will fetch a list of posts from a JSON API and return an observable that emits the response data. To subscribe to the observable and handle the data in a component, import the service class and use the subscribe
method:
import { MyService } from './my-service.service';
constructor(private myService: MyService) { }
ngOnInit() {
this.myService.getPosts().subscribe(posts => {
console.log(posts);
});
}
This will log the list of posts to the console when the component is initialized.
Authentication and Authorization
Authentication and authorization are essential aspects of building secure web applications. Angular provides tools and best practices for implementing user authentication and access control in applications.
To implement authentication in an Angular application, you can use JSON Web Tokens (JWT) to encode user credentials and securely transmit them between the client and server. Angular’s HttpClient module can be used to send a POST request to a login endpoint and receive a JWT token in the response:
login(username: string, password: string) {
return this.http.post('https://example.com/api/login', { username, password });
}
You can then store the JWT token in the browser’s local storage and include it in subsequent requests to protected API endpoints by setting the Authorization header:
getPosts() {
const token = localStorage.getItem('token');
const headers = new HttpHeaders().set('Authorization', `Bearer ${token}`);
return this.http.get('https://example.com/api/posts', { headers });
}
This will ensure that only authorized users are able to access restricted resources in the application.
Deployment and Continuous Integration
Once you have developed and tested your Angular application, you can deploy it to a production server using a variety of hosting options, such as Firebase, AWS, or Azure. Before deploying the application, you should build it for production using the Angular CLI:
ng build --prod
This command will compile the application and generate optimized bundles for production. You can then deploy the build artifacts to a hosting provider using tools like FTP, Git, or a CI/CD pipeline.
To automate the deployment process, you can set up a continuous integration and continuous deployment (CI/CD) pipeline using services like GitHub Actions, GitLab CI, or Jenkins. These tools can be configured to run tests, build the application, and deploy it to a server automatically whenever changes are pushed to a specific branch.
Conclusion
Congratulations on completing the Angular 18 Full Course! You have learned everything you need to know to build powerful and scalable web applications with Angular. From creating components and services to implementing routing, forms, and authentication, you now have the skills to take your Angular development to the next level.
Keep practicing and experimenting with different Angular features and techniques to become a proficient Angular developer. Explore the Angular documentation and community resources to stay up to date with the latest best practices and trends in Angular development. Thank you for joining us on this Angular journey, and we wish you all the best in your Angular development endeavors! #octacademy #learnangular
Thank you so much for watching! 🙏 If you enjoyed the content and feel like you’ve learned something valuable, please consider supporting the channel on Patreon. Your support helps me keep creating and improving the content you love. Even just $1 a month makes a big difference. Thank you for being a part of this journey! 💖
Patreon Link – https://bit.ly/3RR9yix
Thank you i complited this video if it is possible please continue Intermedate lever and advance leave also 🙏
Excellent, it is very much helpful for me
Thank you very much 🙏
Thankyou for making this video
its for angular 17
3:13:02
Thank you for this course <3
Wow this video help me so much, I very very grateful my friend, after finish the series definitely i will buy your your 120+ course, do you have a day for releasing the part 3 ?? have a great day
Greatly appreciate
1:58:15 difference between string inteprolation and data binding
for the people confused how it's not giving the same results (it shows both buttons are disabled), the reason behind it is:
In HTML, the `disabled` attribute is a boolean attribute. This means that if the attribute is present, regardless of its value, it will be considered `true`. On the other hand, if the attribute is not present, it will be considered `false`.
In the code, when you use string interpolation `{{isDisabled}}` to set the value of the `disabled` attribute, the boolean value of `isDisabled` is converted to a string. However, since the `disabled` attribute is a boolean attribute, it only checks for the presence of the attribute, not its value.
So, even if you set `isDisabled` to `false` (which will be converted to the string `"false"`), the `disabled` attribute will still be present in the HTML, making the button disabled.
38:49 i can't see any assets folder in my project
Please help m with that
In PPT you have mentioned that angular is a library but it is a Framework right
Thank you very much for your fantastic work! Your explanations and examples are so helpful, now I have the chance to work with Angular!
Thanks sir. This course was a pure treat !
I like this video series, very easy to understand for a newbie like me. i'm from vietnam <3
If you're new to front end development, this is a great tutorial. If you're just new to Angular, you can skip to the 50 minute mark.
About to watch Thank you!!
What is the name of theme you used ?
thank you for the course ! <3
but why are you givine ngif and ngfor… and now real world application dont use it anymoreu