Angular 8 Tutorial | Create Angular Project from Scratch | Angular Training | Edureka

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Creating a website in itself gives a great feeling and it just gets better when you're doing it using angular. Hey everyone. Welcome back to a whole new exciting session from Edureka. My name is Wajiha. And in this Angular tutorial, you will learn all that you need to know about angular 8 and also to create your own angular application from scratch So our discussion, we'll start with the basic stuff like types of web applications angularjs and its drawbacks the rise of angular and the differences between angular and Angular JS. Then we shall see who uses angular and why is it so popular following that we shall see what is new in angular 8 and then I will show you guys how to install Visual Studio code and angular on your systems. Then we shall be creating a project in angular and see what are the files and folders. Are created along with that project? Also we shall see how this angular application actually works before we move on towards the details of creating an angular application. You must first know typescript. So for that we will take a deep look at typescript and the building blocks of angular after that is done. We shall move on to the most exciting part that is creating a website from scratch. So before we begin just make sure you subscribe to our Channel and hit the Bell icon to stay updated with all the latest area Rekha videos. Also, if you're interested in getting an online training certification and angular check out the link given in the description box below. So coming back towards the session. Let us first see what is web development web development is nothing but the development of applications or websites professionals who create web applications are known as web developers these professionals use various methodologies such as agile to create websites the applications that were created earlier followed the traditional web applications model. Today web applications are mostly single page applications that are compatible both with desktops and mobiles. So what exactly is a traditional web application if you remember in the olden days whenever you would request a web page from a browser the page would reload for each and every request these are nothing but traditional web applications. The main problem of this model was the page rendering process which would happen for each and every request. This was very much time consuming and it eventually Disrupted the user experience to overcome these issues single page application model was introduced in late 2002 the single page model resolve this frequent reloading issue of web pages making it much responsive and saving time. So what exactly is a single page application in a single page application model the website has Dynamic interaction with the user. It rewrites the current page rather than reloading the page entirely this leads to an uninterrupted user experience. Single-page applications will either load all the necessary code like HTML CSS or JavaScript or just the appropriate resources are loaded and then add it to the page if required neither is the page reloaded completely nor will the control be transferred to any other page. There are many Frameworks that allow you to create single page applications. Some of them are angular react view knockout Etc. However, the most widely used framework is angular angular is actually the Our of angularjs. So before we move on to see what exactly is angular, let's take a look at angularjs. Angularjs is an open source front-end JavaScript framework for creating single page web applications. It was developed by Google in 2002. There is no doubt that angularjs was very popular in its time. But angularjs actually racked many important features that were being offered by other JavaScript Frameworks in the market angularjs had large bundle sighs it had performance. It was and it did not support mobile devices therefore to resolve these issues angular was created since then angular has taken over angularjs, but the angular Community has said that they have extended the support for angularjs applications until the 30th of June 2021. The rise of angular angular is an open source web application that is maintained by Google. It is based on type script language, which is also an open-source programming language developed by Microsoft. Typescript is basically the superset of JavaScript with typescript angular introduced and object-oriented programming Paradigm into web development. We shall take a deep look at typescript, but for now, let us differentiate between angularjs and angular angular was a complete rewrite of angularjs. The architecture of an angular application is different from angularjs the main building blocks of angular. Our modules components templates metadata data binding directive. Services and dependency injection will be taking a look at each of these in a while angular does not have the concept of scope or controllers instead. It makes use of a hierarchy of components as its main architectural concept angular has a simple expression for syntax focusing on square brackets for property binding and regular parentheses for event binding mobile development desktop development is much easier when mobile performance issues are handled first thus Angular first handles mobile development modularity angular follows modularity similar functionalities are kept together in same modules. This gives angular a lighter and a faster call with typescript angular has installed class-based object-oriented programming and static typing into website creation. So who uses angular and why is it so popular angular is widely used by many companies to create their websites. Some of them are Google Microsoft. Soft Samsung VMware Santander Etc. Now there are many reasons why angular is considered to be the best angular is easy to use angular allows its users to create full-fledged professional websites with much less of code, when compared to its Rivals the MVC architecture angular framework is based on the MVC or the model view controller architecture where the model serve as the base and contain all the data. Whereas the views basically deal with what the user sees compatibility. T angular works on the client side which makes it compatible for both desktops and mobile applications. It provides filters angular provides filters to filter out different types of data such as numbers lower case and upper case letters Etc. Not just that you can also design your own filters according to your requirements two-way data binding angular allows two-way data binding which means if any changes are made to the models the corresponding views also get updated accordingly. Not just that you can also Update the models through the views not to show you all what this actually is. Let me get back to my project and over here. I'll just click on any of these courses. So as you can see the name of my course is python now two-way data binding actually refers to changing models from the views and views from the models. So as you can see over here when I start deleting any of these letters, the name of the course is also getting altered this is nothing but two-way data binding will get into more details of this. Later on in the session modularity. This is one of the biggest reasons for angular's popularity developers can make use of different modules to create single page applications testing abilities angular provides easy and simple testing as a result of modules separation feature angular is flexible and extensible angular is very accommodating when it comes to integrating with the existing technology stack. So what is new in angular 8 Angular, it requires the support of typescript 3.4 for web development. Opt-in IV preview IV is the name given to Angela has Next Generation compliation and rendering pipeline. This will help you optionally preview your website to see how it works differential loading as a part of its built process angular HCL. I will be able to produce both Lagasse and modern JavaScript bundles. That is es5 or ecmascript 5 or es2015 Plus. Es2015 is nothing but ecmascript 6 this implies a differentially loaded client side with improved speed and TDI which is time to interactive for present browsers backward compatibility of router backwards compatibility of router helps in simplifying the upgrade path for large projects opt-in usage sharing with this feature. The angular team will be able to collect Anonymous information with your consent to keep a track of the commands that are used and the time taken to build. Projects dependency updates angular 8 has updated the dependencies On Tools like rxjs note and typescript. Now this is actually done for better performance and sync with the current environment web worker bundling web workers allow you to write code that run separately from the main thread this improves speed by parallelizing multiple tasks. The developers of angular eight have added bundling support for web workers as a result of requests from various Developers. So now let's move on and take a look at the angular architecture using angular. You can build client-side applications in HTML and typescript. Now, this is the reason why angular can Implement core and optional functionality of typescript from its libraries that you import in your application the most basic building blocks of angular are nothing but energy modules into modules basically provide a compliation context for components present in your project. NG modules will collect all the related code into functional sets. Therefore it can be claimed that an angular app is defined by a set of energy modules. Every angular application will have at least one module which is the root module this module enables the bootstrapping process which I will discuss later on and typically has many more feature modules. The angular components actually defined views views are nothing but sets of screen elements that angular can select among and modify according to your applications logic and the information that is given components in turn make use of service. Has these Services provide application specific functionality that is related directly to views service providers can be injected into components as dependencies making your code module or reusable and efficient components and services are nothing but classes having decorators that are used to mark their type and provide metadata informing angular how to use them the metadata for a component class Associates it with the template that defines a view templates combined ordinary HTML with anger. Directives and binding mock-up that allows angular to modify the HTML before entering it to display the metadata for a service class tells angular to make it available for other components through dependency injection components Define many views arranged in a hierarchical order. The router service can be used to define navigation paths among various views of your application as routers provide sophisticated in-browser navigational capabilities. So moving on in the session. Let me show you guys how to install Visual Studio code the reason why I'm using visual studio code is because it's lightweight fast and open source cross-platform application. And it also has other cool features to install Visual Studio code. You can go to the official website and download the version that is suitable for your operating system. Let me just go to the browser over here. I'll just type in vs code download So as you can see, this is the official Visual Studio code downloading website from here. You can choose any of the versions that is suitable for your operating system and download the installer. Once you're done with installing it on your systems. All you have to do is just complete the setup and it will be ready to use since it's already installed on my system. I'm not going to download the installer again. So once you're done installing Visual Studio code, you'll have to install angular. The first step is to install node.js the reason for Installing node.js is that all web browsers such as Chrome Firefox Etc understand only JavaScript the all the code that we write in typescript must be transpired to JavaScript. The typescript transpiler requires. No chairs for generating the typescript code to JavaScript. So to install node.js you can go to the official website. And from here choose the version that is suitable for your operating system and download the same. Once the installer has been downloaded install node.js on your systems after you're done with the installation. All you have to do is open up the command prompt. And over here just type in the command note - V. So as you can see over here, the version of note that I'm using currently is 12 point fourteen point one. So the moment note is installed on your systems. You'll be able to see the version of it. So I hope you guys are clear still here. The next step is installing the angular CLI or command line interface. Here I'll be making use of npm as a package manager which comes along with node.js by default now to install the angular CLI. All I have to do is type in npm install. - g at the rate angular / CLI the - G over here specifies that I want to install the angular CLI globally. This is going to take a while. The angular CLI is actually a command line interface tool that is used to initialize develop and maintain angular applications. We can make use of this tool directly in the command shell or indirectly through an interactive UI or use such as angular console. I just have a new patch version available over here. So I'm going to run the npm install - g n PM command. So now I have the latest version of npm. The next step over here is to create a new angular project now to do that. I'll have to make use of the ingenue command. The NG new command will be followed by the name of the project. So I'll just take a sample project over here. I'll say Ang new and I'll just call it sample. And I just call it as sample project. Now when you do this, you will encounter two questions that is if you would like to add angular routing and what type of style sheets do you prefer. So for the first question, I'll just choose. Yes, and press why. And for the second I'm going to choose CSS, so I'll hit enter. However, if you are comfortable with any other style sheet, you can go ahead and select that one. Now. This is going to take awhile to create a project. The engine you command creates an initial skeleton of angular application by default at the roots level of the workspace. Not just that it also creates end-to-end tests. When you open this application on the localhost, you will see that a simple welcome page will appear which you can modify later on to create your own application. So now our project is created. Now, what I'm going to do is just get into my project. So the name of my project was Sample project. And I'll hit enter. I want to open this project in Visual Studio code. So I'll just type in code space Dot. So now my project is opened in Visual Studio code. As you can see over here my project already contains a number of files that are created by angular. The first is the end-to-end folder the enter in folder contains a source of files to perform set of end-to-end tests that correspond to the root level application along with test specific configuration files. Next up is the node modules folder this provides a set of npm packages for the entire workplace The Source folder Source folder contains, all the roots level application source files that are required. For your application development the edit config folder the edit config folder specifies the configuration for the code editors gets ignored get ignore specifies. The intentionally untracked files. That should be ignored by get the angle r dot Json folder all the CLI configuration defaults for all projects in the work space including configuration options for Bill serve and test tools that the CLI uses such as the eslint karma and protractor. Next up is the browser's list folder this folder configures sharing of Target browsers and node.js versions among various front-end tools Karma dot-coms dot JS this consists of application-specific karma configuration. Karma is actually a test runner for JavaScript applications package dot locked or Json packaged locked or Json provides version information for all packages installed into node modules by the npm client. In case you make use of your inclined this file will be named as Ian Dot Lock instead the package.json file. This file configures npm package dependencies that are available to all the projects in the workspace the readme file the readme file contains introductory documentation for the root app TS config actor Jason this consists of all the application specific typescript configurations, including typescript and angular template compiler options. TS config dot Json, this consists of default typescript configuration for projects in the workspace TS config spec dot. Json file. It consists of typescript configuration for all the application tests. TS lint dot Json this is an application-specific T eslint configuration. So now let me just open the source folder and show you what's present within this the first folder that you see over here is the app folder this folder contains all the component files in which your application logic and data are defined. Next up is the assets folder as it's contained image and other asset files that are to be copied when you build your applications environments it contains build. Configuration options for particular Target environments by default. There is an unnamed standard development environment and a production environment. You can Define additional Target environment configurations. If required fav icon dot Ico. It is nothing but an icon to use for this application in the bookmark bar the index dot HTML file the main HTML page that is soft when someone visits your site. The CLI automatically adds all JavaScript. And CSS files when building your application, so you typically don't need to add any script or link tags. Next up is the main Don TS file. The main 30s file is the entry point for your application. It compiles the application with jit compiler or the just-in-time compiler and bootstraps the application Root module. The applications root module is nothing but the app module which I'll be showing you guys shortly and you can also make use of the aorta compiler with without changing any code by appending the - - aorta flag. Now this - - taotie flag should be attached to the build and the surf commands in the CLI polyfills 30s. This file provides scripts for the browser support Styles dot CSS lists. All the CSS files that Supply styles for this project tests dot DS file. This is nothing but the entry point for all your unit tests with some angular specific configuration typically. You don't need to edit any of the code that is present Within These test files. So now let me open the folder that we are going to be modifying in order to create our application. That is nothing but the app folder the app folder also consists of a number of files within itself the app component 30s file defines the logic for the applications root component or the app component The View that is associated with this component becomes the root of the view hierarchy. The app dot component dot HTML file. It defines HTML template associated with the root app component a component dot CSS file. This defines the base CSS style sheet for Route app component the app module dot ES file. This is a very important file and it defines the root module name the app module the app module tells angular how to assemble this application it initially declares only the app component. However as you proceed when you add on more components Have to specify them over here. So as you can see over here, it consists of the app component now when I create more components for this project, all I have to do is come and import it over here. So now that you are aware of all these files, let's move on and create a simple project in angular any website generally consists of HTML CSS and JavaScript HTML basically deals with the content definition where our CSS provides the layout JavaScript actually helps you make Dynamic and responsive web applications. So in case you do not have Idea about these go ahead and check out anyway, cos tutorials on the same. So now let's move on and write a simple hello world program in angular. So I've created a sample project. Now. What I'm going to do is run this project to run this project. I'll get back to the command prompt and over here. I'll just type in NG serve. What 4200 seems to be in use? So in case you guys encountered the same problem? All you have to do is type in netstat? followed by - A - ol + - n now this is going to return all the processes that are running on my PC. So what I'm going to do is just find Port 4200. So I'll just type in for to double 0 and then find it. So as you can see over here, the process ID that is making use of this port is 3680. Now, what I'm going to do is kill this process to kill this process. All I have to do is come down. So just remember that process ID. It's three six eight zero. and over here, I'll type in task kill / capital f / Capital PID the / not a question mark sorry followed by the process ID. It was three six eight zero. So we'll just type in three six eight zero and I'll hit enter. So now the process having the process ID three six eight zero has been terminated. Now when I run the NG serve command again, I'll not encounter the same problem. So as you can see my project has compiled successfully now, what I'm going to do is go to my browser and over here. I'll just type in localhost. So as you can see our sample project app is running. This is a welcome page that is created by angular now to build your projects. All you have to do is go and modify this so I'll just get back to my project. So what I'm going to do is just open this app component dot HTML file. I'll delete everything present over here except the router Outlet. And over here, I'll just give a H1 tag. and as this type in hello world I'll save this I'll get back to my project and I'll read out this page. So as you can see over here instead of seeing that welcome screen all I'm seeing over here is Hello World, which I modified in my project. So that was just very basic will get into more details of the later on but for now, let me tell you guys how this angular application actually is working the execution of an angular application starts from the angle r dot Json file. This file as already discussed earlier is used to define all the Standards and pots for your angular project also angular dot Json file specifies, which means TS and index dot HTML file has to be executed. So as you can see on the screen, I have both the index dot HTML and the main TS file present in the angular dot Json file. Now, once this main dot t-- s file is detected. It is compiled as it contains the code that is required to bootstrap or start off the angular application from this main dot DS file. Angular moves to the app module. So this app module is present in the app module dot t-- s file. So once the main dot t-- s file is executed. It moves on towards the app module dot t-- s file the app module dot JS file consists of all the components that are required by an angular application. These are the components that a girl needs to know in order to run the application. So in case you create any component, it has to be declared within the Declarations array present in the energy module decorator. Angular will check for this bootstrap array and then it moves on towards the app component. So the app component is present in the app component 30s file the app component OTS file specifies the selectors the tempered URLs as well as the style URLs all the components that are present in an angular application are related to this root component. The a fruit selector is present in the index dot HTML file. So to summarize it I can say that the execution begins from main door TS and then it's passed on to the app module or TS file following which the app component DTS file is executed. So like I've already mentioned before angular is built on typescript before moving on further in this session. I would like you guys to get familiar with typescript In case you're already familiar with typescript you can skip this part and move on towards the next spot under the section. I'm going to show you guys how to install typescript 3.4 and then the basic types are available in typescript variables type assertions functions classes and interfaces, so to begin with let's move on and see how you can install typescript on your systems to install typescript just open up your command prompt. So typescript is programming language that was developed by Microsoft and it is basically a superset of JavaScript with typescript angular projects can be created using object-oriented programming model. The typescript programming language is designed for development of large applications. However, it needs to be trans compiled to JavaScript as the browser's understand JavaScript only this process of converting typescript into JavaScript is called as transpilation while using typescript you can make use of any of the JavaScript libraries. Also any code you write in JavaScript will be valid in time. As you can convert JavaScript code into typescript by simply changing the extension from dot JS 2 dot t-- s also typescript is not platform-specific. It can be used on any browser device or operating system. So what is the difference between typescript and JavaScript typescript is an object oriented programming language whereas Java Script is just a scripting language typescript can support static features modules interfaces Etc, but JavaScript on the other Has no support for any of these so to install typescript on your systems. All you have to do is open up the command prompt and then type in the command npm install - gee typescript And then you hit enter. So as you can see typescript has been installed on my system next up. You're going to check for the version of typescript to do that. Just type in TSC - - version. And hit enter. Okay. I just made a spelling mistake of here. It's a version. So as you can see over here, the version of typescript that has been installed is three point seven point five now to write some typescript code. You'll have to open up a file in Visual Studio to do that. What I'm going to do is just type in code followed by the name of my file. So I'll just say Example 1 1 do not forget to add in the extension. That is dot DS. So as you can see on the screen a new file has been opened wherein I can write my typescript code. So what I'm going to do over here is simply write one function that is going to return something to the console. So for that I'll just type in function. which is a keyword and then this will be a log function and I'll just pass a parameter say a within this function. I'll have a simple console DOT log statement. It is going to lock something to my console. Next I'm going to define a so I'll just say variable a and I'll just say hello world. Once this is done. I'll have to call the log function. So just say log of a I'll save this and I'll get back to my command prompt now to convert this into JavaScript. You'll have to call the typescript compiler using the TSC file named TS command. So here the file name is example 1 1 so I'll just type in TSC example 1 1 dot DS. So now the file has been converted or the file has been transpiled. So basically when you do this, the typescript code will be converted to job. Script, but by using angular you will not have to do this manually. The angular CLI will automatically call the typescript compiler and perform transpilation when you use the NGS of command. So now if you want to execute this file, you have to type in node followed by the filename dot JS. So I'll just type in example 1 1 dot Js. So as you can see over here, the transpile JavaScript has Returns the output now in case you want to view what is present in that example that XI dot JS file. All you have to do is just type in code. Example 1 1 dot J's. Okay. So as you can see here is the transpiled code the code that we have written is in typescript, but the code that has been transpiled to JavaScript is present in example 1 1 dot JS file. So I hope you guys are clear with this in case you have any problems with the functions or the syntax do not worry because I'll be covering each of these later on in the session. So the first thing that I'm going to be discussing over here is the basic types that are present in typescript typescript supports almost the same data types that are present in JavaScript. These can be Boolean numbers strings arrays tuples enum any void null and undefined never object and type assertions now in case you're coming from JavaScript background, you guys will be very much familiar with the VAR keyword. But please make a note that in typescript. It is better to make use of the let keyword rather than the VAR keyword. The let keyword was included in JavaScript in ecmascript 2015 and is considered as a standard. As let is much safer compared to VAR. So now let's move on and take a look at each of these. So the first basic type that I'm going to be discussing over here is the Boolean data type as many of us know Boolean data type refers to true or false values in typescript. It is preceded by a Boolean keyword. So before writing down the Boolean type, what I'm going to do is show you how to declare the types in typescript. So the first method is to make use of the VAR keyword followed by the defile and then a colon symbol. the type of variable followed by an equal to sign and then comes the value. So this is the first method the second one is much similar, but you can omit the value present over here. So just copy this paste it over here followed by a semicolon. The Third Way is to Simply specify the value without specifying the type. So just copy that. And instead of type. I'm going to have the value and instead of the colon symbol will be an equal to symbol. The fourth method is declaring neither the value nor the type in this case the data type of that variable becomes any which means you can initialize any type of value to that variable. So I can just have a variable followed by the identifier. And then the semicolon so these are the four methods in which you can declare variables in typescript. So before this, we were actually talking about Boolean. So in case I want to create a variable holding Boolean values, all I have to do is type in let I'll call the variable as be and specify the type to be Boolean. And I'll give the value as false. So as you can see over here Visual Studio will also give me details about what's this actually is. So when I hover over B, it says that b is a Boolean type variable. So in case I want to print out the value of B, all I'm going to do is type in console DOT log B. I'll just save this. I'll get back to my command prompt. And the first thing that I'll have to do is call an T. SC e XM dot TS. Sorry, I just made a mistake in the name of the file. It's exm to okay. So now my file is transpiled now to execute this file. All I'm going to do is just type in node file name. That is e x M2 dot JS. Okay. So as you can see the value is false the next basic type that's present in typescript is numbers. So in typescript numbers are nothing but floating Point values and typescript supports all types of numbers such as octal binary hexadecimal Etc to declare any of these you can make use of the number keyword. So in case I just change the value from Boolean to number and this will not be false. This will be some value say 10 and then just change the name of the variable. I'll say call it C and then instead of logging be a log C. Okay. So now let's transfer while our file. And then I'll type in note X M2 dot Js. Okay, so as you can see the value of C is 10 in case you want to specify hexadecimal octal or binary values. You can do it in a similar manner. So let me just take an example of a hexadecimal value. So I'll just type in let D which is a number. Equals zero. Oh one two three. So this is an example of an octal value. The smaller that you see over here specifies that this is an octal value similarly. If you have to specify binary or hexadecimal values, all you have to do is change this by b or X. So now let's move on towards next type which is strings strings are used to work with textual data in typescript. You must use string keyword to specify them. Say, for example, I have a Able to say name. So I'll type Name colon string. I'll just change the variable name since I've already declared this before. So I'll just call it as first name rather. This is going to be a string and I'll just specify the name as Eddie Rekha. Okay. So this is how you specify strings now in case you want to execute this. All you have to do is get back to your command prompt transpile your file and then make use of the node command followed by the name of the file dot JS to execute this. So now moving on towards the next basic type which is arrays typescript supports arrays just like JavaScript, you can declare them in two ways. The first is the use the type of the element followed by square brackets or an array or specify them with an angular brackets, okay. So this clearly this from here. And I'll take two new variables and say let a a be an array of string type. So string followed by square brackets now for the values. I'll just specify typescript and JavaScript is 80s followed by Js. Okay. So this was the first method the second method was making use of the angular brackets. So just type in let a b which is a new variable followed by the array keyword and then I'll open up the angular brackets and specify the type and then you can pass in the values. You can specify any values of your choice. So this is how you declare arrays in typescript. So I hope you guys are clear with this next up. Our tuples tuples are types that can also be used in typescript. In case you have to Define arrays with fixed number of elements whose data types are known but they can be different. So this means I can have any variable for example, let AC beer Tuple of numbers and strings. So I'll just say number the first element and string as the second element. So here I know the type of data that this Tuple is going to hold but it's not going to change over time. Okay. So the next type that I'm going to be discussing over here is enum enum. In typescript allows you to define a set of named constants. Okay. So if you guys are wondering what are constants there are constants are variables whose values cannot be changed. Say for example, I just type in Co NS t with stands for constant. I'll declare a variable ad and I'll specify its value to be 10. So what happens when I do this when you make use of the const keyword the value of this variable, which is AD will not be changed over time. So if you guys are wondering when you should actually use this, you must make use of cons for all those variables whose value you wish to preserve and not for the others. The idea is that if a variable didn't need to be modified someone else working on it should not do it. But using the const keyword the code becomes foreseeable and helps in reasoning out the flow of data. So now The enum type enough in typescript allows you to define a set of named constants using these enums you can make document intent easily or even create a set of different cases in typescript. You can use both numeric enums and string based in arms alums are defined using the enum keyword. So let me take an example of a numeric enum. So what I'm going to do is just type in enum, which is the keyword followed by fruits and then I'll just call this enum as fruit. Now what I'm going to do is specify some values within this. So the first value is going to be apple and I'll equate apples two one now. We'll discuss why I'm doing this later on now. Let me take another fruit. I'll say banana and mango and finally an orange. Okay. So this is how you declare an enum the numeric enum that you see over here has Apple initialized to 1 the other members are Auto incremented having the values 2 3 & 4 in other words fruit. Apple has the value 1 banana has to Mango has three and orange has for however, it is not necessary that you have to specify any value to this in case I just remove this value. Then Apple will be initiated to Value 0 banana would be one mango would be to and orange would be 3 respectively this Auto incrementing Behavior comes in handy when we do not care about the member values, but do care that each member has a distinct value in that in um, in case I want to return the value of Any of these what I'm going to do is just type in console DOT log. And over here, okay before this. I just take a new variable or I'll just call it as root name. This is going to be a string and then I'll just call fruit of too. And then I lock the fruit name. Let me just save this get back to my command prompt and over here. I'll transfer file this file. So now to execute it. I'll just type a note E X M2 dot JS. Okay. So as you can see over here, the fruit that is initiated to do is mango. Okay. So I hope you guys have understood this. Okay. So now moving on towards next type which is any the any type is used when you do not know what is the data type of the element this usually happens when you're dealing with Dynamic values and you do not On to encounter compile time errors in case the type of the element generated is not as that you assumed the any data type allows you to opt-in and opt-out of type checking during compilation. So in case you want to declare a variable of any type, all you have to do is just type in let followed by the name of the variable and specify any so now the variable AG can hold any value such as numbers strings Etc so over here if I just specify a g equals 10 And also a g equals the string say Eddie Rekha, you can see that it's not showing any errors. But in case I change this from any to say number, you can see that when I assign a string to this it throws an error. Okay. So I hope you guys are clear with this now moving on towards the next type which is the object type the object type basically represents a non primitive type in typescript. This means it can be any type which is not a number or string Boolean symbol null or a Identified in case you want to declare an object variable. All you have to do is make use of the let keyword. Let me just clear this. Specify the name of the variable and then type an object. So this is how you declare object types in typescript. So before moving on further, let me clearly differentiate between the left and the VAR keyword. So what I'm going to do over here is just create a function and then I'll specify some name. I'll just call this as my funk. And within this I'll have a for Loop and first I'm going to take the VAR keyword or the VAR keyword. So I'll say variable. I initiate it to one until I is less than or equal to 2 and then I plus plus. Okay. So under this condition is met what I want to do is just log the message saying welcome to edu Rica. So it's a console DOT log and I'll type in the string which is welcome to Erica. So after that is done, I'll take another console statement. and I'll just type in the final value of I now I'll come out of this function and I'll call this function. So now let me just save this get back to my command prompt and execute this. So as you can see over here the string welcome to edu. Rekha has been returned to X this is because the value of I at first was one and until the value of I is less than or equal to 2. I wanted it to print the string. Welcome to edu Rekha. So therefore welcome to edu Rekha printed twice followed by the final value of I okay. I'm not specified the final value of I let me just do that over here by specifying a plus sign and then I sorry for that. I'll read transpile it. and execute the function Okay. So here it is. The value of I is 3 so now let's see what will happen if I change this VAR to let so just erase this and I'll type in lit. Okay. So as you can see over here the scope of I is not going Beyond this for Loop the eye that is present outside this for Loop throws an error. So I hope you guys have understood this now. This is why the left key word is considered to be more safer than the wall keyword eye is visible only within the for Loop, which is the nearest block. And if you try to access it anywhere outside it it is not possible. However, even if you compile it after changing from award to let the compiler will compile it and convert it into JavaScript. The Javascript file can be executed to return the corresponding output. So, let me just save this get back to the console. I'll clear the screen and I'll transfer file this file again. Okay, so as you can see over here, it has thrown an error saying cannot find the name I so I hope you guys are clear with this. So now moving on. Towards something very important with this type assertions when you declare some variable with the type, you will see the typescript will assist you on all the available methods that you can use along with it. But typescript also allows you to declare a variable without specifying its type. So what I'm going to do over here is just take an example. So let me just take a new variable. I'll say let my variable which is of type string hold some value say Eddie Rekha. No the moment. I specify my variable followed by a DOT symbol. You will see typescript has given a list of all the functions that I can use along with this variable now in case I do not specify the type of this function. So what I'm going to do is just delete this and then when I type in this function followed by a DOT symbol, you will see that this is of any type and it does not give you any suggestions. Now in this case, you will need to explicitly specify the method that you want to use. If you still want typescript assist you, you can make use of type assertions type assertions will help you specify the type of variable. Even if you have not specified them while declaring it now type assertions can be done in two ways. The first is to make use of the angular brackets. So what I'm going to do here is take another keyword. I'll say let take another variable. I'll say my variable 2 and this will be of number type 2 which I'll specify the string value of my variable So within this as a steak the Brackets, I specify the string type and I just called my variable previously when I typed my variable followed by a DOT symbol typescript was not assisting me since this is of any type now. I've specified that this is of string type the moment. I type a DOT symbol along with this you will see the typescript is assisting me again. So this was the first method of specifying type assertions. The second method is to make use of the as keyword. So instead of this what I'm going to have is my Table as a string. So I hope you guys are clear with this. So that was about to type assertions now moving on towards the next topic which is functions in typescript functions, as we all know are the building blocks of a program functions allow you to build up different layers of your program the deal with abstraction information hiding Etc in typescript functions play a very important role in describing how to do tasks. Another Advantage. Is that typescript also adds some new capabilities to stand on. Two functions to make them easier to walk with in typescript. You can create functions both for the name or as Anonymous functions just like JavaScript. This will let you choose most ideal approach for your applications. So now let's create a function of here. I've already taken a few examples before so I'll just take a function say product. And I'll pass in two variables as parameters to this and then open up the curly braces and within this I'll just have a single return statement that is going to return the product of X and Y. Okay. I've made a spelling mistake of here. So this is how you create functions in JavaScript you type in the function keyword followed by the name of the function and the parameters, then you'll have to specify all the statements that come within this function within curly braces. Now in case you want to call this function simply specify the name of the function along with the parameters. I just say 2 comma 3 so now to run this file, all you have to do is get back to your command prompt type in TSC followed by the name of the file and the note followed by the name of The file dot JS similarly if you want to create nameless or Anonymous functions just type in Anonymous over here and then I'll make use of the let keyword. I'll take a new variable and to this I'm going to assign the value that is returned by a function. Now this function is actually a nameless function or an anonymous function. Sorry guys. I have to specify an equal to sign over here. I'm going to have the same return statement for this as well. So now let me just save this and before executing this I'll just Open console. DOT log of w so now let me get back to my command prompt and execute this. So as you can see over here, I have the value of 4 star 6, which is 24. So I hope you guys are clear with this functions can also refer to those variables that reside outside the function body. Let me just delete this from here. So what I'm going to do here is declare a new variable outside this functions body. So I'll just call this variable to be Y and I'll specify its value to be 3 now. What I'm going to do is return the product of X star y. I'll give this a different name. I'll call it a z Then why so this time I'll return the product of X star y star Z, and then I'll call the function. So as you can see over here, I have the value returned as 45 which is a result of multiplying 3 cross 3 cross V. So I hope you guys are clear with this. You can also add type to a function in case you want to add some type to it. All you have to do is just specify the type of variability want to give over here. So in case I want to specify X to be a number, I'll just say x colon number and Y: number you can also have different types. So instead of why having number you can also. Have it as a string or anything else. So now talking about something very important, which is Arrow functions are all functions are somewhat like Lambda functions of python C sharp Etc. These functions can be defined in just a single line. So to specify an error function of here. Let me just take a new variable. I'll just call this variable a ZX. I'll open the parentheses. I'll take in a variable a I'll specify the variable are and then the arrow function and I'll just lock the value of a so over here my variable X over here holds the value of what the function has returned a over here is the parameter and the action to be performed is console DOT log, so now I'll just get back to my command prompt. What I'm going to do is just transpile this file. And I just opened the JavaScript version of this. Okay. So as you can see over here, this is the typescript function that I've written. Now when I open the Javascript file, you can see that it is much more bulkier compared to that of the typescript file Arrow functions are very useful in terms of reducing the code size. Plus they can also be soft to other methods as inputs if my function has no parameters. You can also specify them without any parameters. So in case you do not have any parameter simply leave empty Brackets like this. So I hope you guys are clear with this. So now moving on towards classes in typescript typescript introduced classes so that they can Avail the benefits of object-oriented techniques like encapsulation and abstraction. The class in typescript is compiled to plain JavaScript functions by typescript compiler to work across platforms and browsers. So class in Java Script can include Constructors properties and methods now, it's very important that you guys concentrate on this part because we're going to make you Of this syntax in our project later on. So what I'm going to do here is to create a class. So I'll just type in the keyword class and I'll name this as my class. Next up. I'll open the curly braces within this I'll specify a Class Property. I'll just take a variable J of number type now J is nothing but the property of my class so next up. I'm going to have a Constructor and within this I'll take a new variable say K and this is also going to be of number type you can give any types of your choice. I'm just taking this for instance within this Constructor. I'll just have a simple statement. So I'll say this dot value of J is equal to Next I'll declare a function. Let me just call this as value. And within this I'll have a simple return statement. That says the number is plus this dot my variable or this dot j. So that is done. Now. Let me come out of this class. So my class is ready. But as we all know to access any of the variables or functions present within this class, I'll have to create an object of this class. So to create an object. I'll have to make use of the new keyword. So what I'm going to do is just take an object name and say my object equals knew it. The keyboard to create an object followed by the class name some my class. My class Constructor has one parameter over here whose value I'll have to specify so just specify the value is 6 next up. I will make use of the console DOT log statement and then I'll make use of the object which is my object dot value, which is the function. Okay. Now we just execute this code. So as you can see, I have the output as the number is 6 so basically my object over here is accessing the function that is present in my class. And then it Returns the corresponding value typescript classes also support inheritance. Inheritance is the ability of a program to create new classes from an existing class the class that is extended to create new or classes is called as the parent class or the superclass. The newly-created classes are referred to as the child or the subclasses a class inherits from Another class using the extends keyword child classes inherit all properties and methods except the private members and Constructors from the parent class. Another point to be noted over here is that typescript does not support multiple inheritance. So what I'm going to do is just create a new file over here. So I'll type code exm three TS. And over here, I'll just type in the syntax of inheritance. So what you have to do is make use of the extends keyword. So I'll have the class child followed by the extends keyword and then the parent class. So what I'm going to do is get back to my previous example and from here. I'll just copy the first half of the school. Let me just change the name of this class. I'll call it as new class or parent class. Now in case I want this to be a parent class, what I have to do is make some other class inherits this so I'll just take another class. I'll call it as child or child class. Please make a note that the first letter should be in caps. I'll do it over here as well. This is nothing but convention and it's better to follow it. So the child class actually extends the parents class. So within this, I'll specify some new variable say l and this is also going to be of type number it can be of any type though next up is the Constructor variable M of types number now, this is specific to the child class. Now, what I'm going to do is make use of the variable that is present in the parent class case the parameter that's present in the parent class. The reason why you're seeing all these red lines over here is because I've not made use of super keyword. So what I'm going to do over here is Type in the super keyword and I'll specify the parameter that have taken from the parent class. That's K. So as you can see all the red lines have disappeared and on also type in this. Okay, so that is done now. I'll create a value class within the child class. And I'll return I return the value of K and the value of M. So just stipend. Value from parent is plus this dot j plus and the value from child is plus this dot l, so, that's it. I'll come out of this function. I will create an object of this class. I'll send you object and the name of the class which is child class. I'll pass in the values as 12 and 23 and then I'll make use of the consult or long statement. And we'll call the value function using this. So this is how you create child classes in typescript. You can also make use of access specifiers in typescript. They can either be public private or protected. For example, if you make the parent class variable as private, you will see that an error will be shown in the child class. So just get back to my class over here and over here for this property. I'll just specify this as to be private. Now when I type this dot j over here, you can see that type. Skip is throwing an error. You can also see the message that says property J is private and only accessible within the parent class similarly if I change it from private to protect it. You will see that the error disappears now. This is because protected members are visible to child classes as well private members are accessible only and only within the class and nowhere else. So now let's move on towards typescript interfaces and interface is a structure that will contain only the Declaration of fields and methods and they'll be no definition of it when some class inherits and interface that class has to Define each of them within the class itself. I'll create a new file of here. In case you want to Define an interface, you'll have to make use of the interface keyword followed by the name of the interface. I'll just specify the name to be my integers within this. I'll have a few variables say s which is a number T, which is a string and then a function I'll just call it as my function. Okay. So as you can see over here, none of these have any values assigned to them nor does my function have any definition now in case of classy Implements this interface. It will have to specify values to S and T and also redefine my function. So let me just take a class. I'll call this class A to make use of that interface. I'll have to use the implements keyword so implements my integers. So the reason why you're seeing an error is because Class A has not redefined anything present within the interface. So the moment I read to find everything present in the interface the error will disappear. So what I'm going to do is type in s now And D which is spring. And then I'll take a Constructor of this class to which I'll fasten the same values. That's SNT. So this dot s is s and this dot T is T and then I'll redefine the function which is my function. So as you can see over here the moment I've redefined each of these the error has disappeared from here. So here I'll just type in console DOT log implementing an interface and then I'll return the value of both these variables. That's SNT. So I'll type in this dot S Plus a space character and this dot T. Now. I will create an object. Let objects AO equals new followed by the name of the class, which is a and then I'll have to specify two parameters to this. The first is s which is a number the second is T, which is a string. So for S. I'll just say one and for the string and Say hi. Okay, so that is done and I'll make use of the console DOT log statement again. I'll say oh. My function. Okay, let me just save this get back to my command prompt and transpile this file. Sorry guys. I've executed The Inheritance example, so I'll just transfer file the file where and I've written this so I'll just say TSC. That's X4 dot TS. So as you can see over here the values 1 and high have been returned. So I hope you guys are clear with this. So now let's get back to angular. So the next most important thing that you have to know is the building blocks of angular the building blocks of angular. Our modules components templates metadata directives data binding services and dependency injection modules a module basically allows you to separate the functionality of your program into different parts. These parts are Then of each other which means each modules outputs are completely separate from that of the other if you make changes to any of these the change will be made on the to that module and it will not interfere with those of the others in angular modules will allow you to group together other building blocks such as components directives pipes and services. The modules of angular are referred to as NG modules applications created by angular are driven by functional sets, which collect related data. Therefore angular apps are defined. By a set of NG modules. NG modules are very much different when compared to those of the JS modules or the JavaScript modules. NG modules declared a group of files that can be passed and analyzed. You can also make use of other energy modules within one by importing them above all these modules proved to be very much helpful when you're creating large applications that have multiple functionalities besides allowing clean creation. These modules also help you minimize the code size by reuse. And optional import of the required ones. This is also referred to as lazy loading. Meaning you can load any NG module only on your demand not to forget Angie modules are also one of the biggest reasons for angular as popularity. Every application created with angular will have at least one NG module, which is the truth module. This route module is referred to as the app module. So by default the app module will look something like this. So let me just get into the project. We created initially to show y'all what? this app module looks like So as you can see on the screen, this is the default app module that has been created by angular. It is present within the app module dot t-- s file the import statements that you see over here are basically JavaScript Imports the class that follows has an NG module decorator decorators, basically modify classes or property definitions. They are also referred to as annotations and our JavaScript features in angular these decorators contains some metadata or two classes. And properties so as to convey what they mean and how they are supposed to function. I shall explain what is metadata in detail later on when we reach the component section here the NG module decorator first identifies the root module or the app module and then tells angular how to launch and compile it by making use of the metadata the Declarations that you see initially are the applications only component Imports are used to import the browser module to attain browser Services as Dom sanitization rendering Etc. Providers are nothing but service providers which we shall be discussing later on bootstrap is the root component created by angular and it is inserted into the index dot HTML host web page. So I hope you guys are already familiar with this because I've already explained this earlier while discussing how an angular application actually works. The app component is present both in the Declarations. And in the bootstrap array this app component is created by the angular CLI or the command line interface for every default application. The Declarations are a present in the module informs angular above the components that belong to that module when you create more and more components to your application. All you must do is add them over here components cannot be used without declaring them in the NT module class. So make sure you declare every component you create exactly once in the energy module class if you fail to do so, you're sure to encounter an error. The Declarations are a can also contain declara bills or components directives and All the modules declare labels should be present in the Declarations array and they must belong to just one energy module the classes that are declared within one module are visible only to that module, but they can be exported to other modules in case you've defined some of the component you will have something like your component your pipe etc. For now. I have not created any of these. So let me just remove this from here. So apart from this the energy module can also contain exports exports are the subset of declarations that are accessible in the component templates of other energy modules. components as mentioned earlier angular applications have at least one component, which is the root component this root component connects the component hierarchy with a page document object module or the Dome all components Define classes that have the applications data and logic and they also are associated with the HTML template this HTML template defines the view that is to be displayed their four components are basically used to control the views of an MVC architecture the Decorator will tell angular that class immediately below is a component and provides the templates and related components specific metadata angular components are the most basic UI or the user interface for your application and they always are associated with the template and are subsets of directives. The components logic is defined inside a class this basically determines how it supports the view components are created updated and deleted by angular as you proceed in your application your application can Take action at each moment in this life cycle through optional lifecycle hooks such as NG On in It lifecycle hooks provide visibility into the key life moments and the ability to act when they occur therefore lifecycle hooks allow you to control the components runtime behavior, and they are called only when they are defined angular provides a number of lifecycle hooks such as NG on changes and jion in it. NG do check Etc and jion changes will respond to angulas resets. At abound input properties the method receives a simple change object of current and previous property values. It is called before the NG on init method and whenever one or more data bound input property changes NG on in it the NG on in it hook initializes the directive or the component after angular first displays the data bound properties and set the directives or the components input properties. It is called once after the first NG on changes method is invoked. Angie do check and they do check will allow you to detect and act upon changes that angular can't or won't detect on its own. This function is called during every change detection run. There are many more lifecycle hooks that you can check out for yourself in the official documentation. Okay. So now moving on towards the next building block which is metadata, the metadata of a component informs angular of all the building blocks required to create and present the component along with its view to be specific. It links. It's with the components either directly with inline code or by reference the component along with the template describes a view the selector that you see on the screen is a CSS selector that tells angular to create and insert an instance of this component whenever it finds the corresponding tag in the template HTML template URL the module relative address of this components HTML template alternatively you can provide HTML template in line as a value of the template property. The providers array is nothing but an array of providers for the services that the component requires. So what exactly does a template to templates are somewhat like HTML that inform angular how to render the components as mentioned earlier angular views are created in a hierarchical order and the template that is immediately associated with the component defines the components host view. The hierarchy of viewers will not just contain views from components of the same module, but also those of the other modules the Template syntax as mentioned earlier templates are very much like HTML, but they have angular template syntax in angular component can be a controller or a view model. Whereas the templates of represent views having HTML in templates angular template make use of HTML but the script element is an exception. It does not allow this tag in order to eradicate the risk of script injection attack. If you make use of it the tag gets ignored and a warning will be raised by the browser. All however, some HTML tags like HTML body base Etc. Make no sense in angular everything else. However can be used interpolation and template Expressions through interpolation. You can add strings into the text that is between HTML element tags and within the attribute of fineman's the template Expressions can be used to calculate these strings interpolation syntax strings can be added using interpolation by specifying them within double curly braces. However, you can Make use of this in different places for different requirements angular actually converts interpolation into property binding another benefit of making use of angular is that it allows you to configure the interpolation delimiter and use something of your choice instead of the two curly braces to do that. All you have to do is go to the interpolation option in the component metadata, template Expressions. Template expressions are present within two curly braces and they produce a single value angular will execute the expression. And then it assigns it to a property of a binding Target such as HTML elements components or directives. Okay. So now moving on towards the next building block which is data binding. If you do not make use of a framework, you'll have to push data values into HTML controls turns user responses into actions and also value updates. Obviously. It is very irritating to write everything plus it will be prone to errors and will be horrible for someone else to analyze the code using are you can perform two-way data binding which is a mechanism that coordinates the template along with the components. All you have to do is add some binding markup to the template HTML in order to inform angular how to connect with both these sides. There are basically four forms of data binding markup. And each of these has a Direction they can either be to the Dome from the Dome or both. Okay. So moving on let's discuss in detail about property binding property binding is actually one way binding. In property binding value Flows In One Direction that is from the components property into the target elements property. It can be used to read or pull data from the target elements in the same way property binding cannot be used to call a method that belongs to the Target element the events raised by elements can be acknowledged only through event binding event binding event binding on the other hand will allow you to listen to certain events such as Mouse movements keystrokes clicks Etc in Allure event binding can be achieved by specifying Target event name within regular brackets on the left of an equal to symbol and the template statement on the right within coats. So as you can see in this example over here, I have the target event name which is click and then the template statement whenever event binding occurs and event handler will be set by angular for the Target event when the event is raised the Handler executes the template statement this template statement usually involves a receiver that performs a Action, which is in response to the event for example, storing a value of an HTML control into a model binding is used to convey information about the event. This information can have data values like event object string or a number. Okay. So now that you guys are aware of both property binding and event binding. Let me tell you guys what exactly is two-way data binding. I've already given a small introduction about this previously. So two-way data binding allows your application to share information between a component. Class and its template in two-way data binding there are two things can happen in two-way data binding. The first is setting a specific element property. The second is listening to an element change event angular offers a special two-way data binding Syntax for this purpose. Two-way data binding can be specified within a combination of brackets that is square brackets outside and parenthesis inside. So it's going to look something like this. You're going to see all this shortly when we're actually creating our Okay. So now let's move on towards pipes with angular pipes display value Transformations can be declared in your template HTML a class with the at the red pipe decorator defines a function that transforms input values to Output values for display in the view angular has various types of pipes such as uppercase V lowercase pipe date pipe currency pipe Etc. Not just that you can also Define your own pipes as well. So as you can see over here, this inputs line is an example of two-way data binding now just because of this line that I was able to manipulate the name of the course plus see the changes in the name itself. This button click over here is an example of event binding the course ID that you see over here is interpolation or property binding. Okay. So I was actually talking about pipes now you can see over here that I've specified some value within the interpolation brackets and then I've made use of a pipe in order to convert it to uppercase letters. So all the course names Would be changed to uppercase not just this you can also change pipes sending the output of one pipe function to be transformed by another pipe function a pipe can also take arguments that control how it performs its transformation. So now moving on towards the next building blocks, which is Services a service is a broad category that encircles values functions or features that are required by an application service classes have an arrow and well defined purpose components are differentiated from services and angular. Are so as to increase the modularity and reusability of your code separating the components view related functionality and other kinds of processing will make your component classes lean and efficient components are also supposed to present properties and methods for data binding in order to function as a medium between view which is rendered by the template and the applications logic which generally includes some notion of a module component can delegate their tasks to Services. Say for example fetching some data from a Validating user input or logging outputs to the console by defining such processing tasks in an injectable service class. You can make use of those tasks available to any component applications can also be made more adaptable by injecting different providers of the same kind of service by making use of this class over here. I'm going to send a message to the console whenever a course detail has been fetched. Okay. So what is dependency injection dependency injection can be used by new components to provide services or other things that they need components basically consume services that is Services can be injected into a component giving that component access to service class. You must make use of the injectable decorator to provide the metadata that allows angular to inject it into a component as a dependency. Similarly. You can also use the injectable decorator to indicate that a component or any other class say for example of service a pipe or an energy module has a dependency the Is the main mechanism angular creates an application white injector for you during the bootstrap process and additional injectors are needed you actually do not have to create injectors and injective creates dependencies and maintains a container of dependency instances that is reused if possible. A provider is an object that tells injector how to obtain or create a dependency. If you need any dependency in your project, you must register a provider with the applications. Injector. So as to follow the injector to use the provider in order to create new instances. For example, the provider is typically the service class itself in my project over here the course list that I've shown you earlier requires a core service. So this is basically my course service whenever angular see some component that is dependent on the service. It will first check if the injector has any existing instance of that service if the instant does not exist the Will create one using the registered provider and then it adds it to the injector before returning the service to angular once all the services that are requested have been resolved and return angular can call the components Constructor with those Services as arguments. Okay. So now let's move on towards directives a directive in angular is basically a class with the at the rate directive decorator. The angular templates are Dynamic when they are rendered the Dom will be Formed according to the instructions given by the directives a component is technically a directive but components are so distinctive and Central to the angular applications that angular defines the at the rate component decorator separately. This actually extends the directive decorator with template oriented features. In addition to components. There are two other kinds of directives. They are structural and attribute to the directives angular defines a number of directors of both these kinds the metadata for a day. Active Associates the decorated class with a selector element that is used to insert it into HTML in templates directives typically appear within the element tag as attributes and that can either be by name or the target of an assignment or a binding. So what exactly are structural directives structural directives are used to alter the layout by adding removing or replacing elements in the Dom for example, the NG for directive. Let me just open my project and show Y'all where its present? Okay, this ng4 is nothing but a structural directive this directive will allow a list of elements to my console attribute directives attribute directives will allow you to alter the appearance or behavior of existing elements in templates. They look like regular HTML attribute just as the name says the NG module directive that I've shown you earlier which implements two-way data binding is also an example of an attribute directive this Of modifies the behavior of an existing element by setting the display value property and responding to the change events. So I hope you guys have a clearer idea of each of these building blocks. Now, it's very important for you guys to know this because while creating your applications you'll have to make use of each of these building blocks. Okay. So now let's jump onto the most exciting part that is creating an angular application from scratch. So like I've already told y'all before make sure that your development environment includes no chairs and an npm package manager to check the version of node on your systems. You can type in the command node - V I've already shown this before but I'm doing this just for reference. So as you can see, I have no diversion 12-point 14.1 the first step before creating a project is to install the angular CLI. Like I've already told you all before once you're done with installing node, you'll have to install angular CLI on your systems to do that. You can make use of the npm install - g at the rate. / CLI command, so that is npm install - G for Global at the rate symbol angular / CLI. Once that is done. You can create your new project. So to create a new project you should make use of the NG new command followed by the name of the project. I'll just name it as a tea or angular tutorial and this is going to take a while guys. The first question that prompts is if you would like to add angular routing just say yes and hit enter you'll see another question that prompts which asks you which style sheet format. Would you like to use in this case? I'm going to use the CSS style sheet. So therefore I'll hit enter. CSS so now a project has been created the next step is to get inside your workplace to do that. You just have to type in CD followed by the name of the project in my case. The name of the project is 80. Okay. So once this is done, I'll have to solve this project the angular CLI includes a server so that you can easily build and serve your app locally now to run your project using that server. You can simply type in NG serve - - open This NG serve command will launch the server. It will watch over your files and also rebuilt the app as you make changes to it. - - open is optional and when you use this it automatically opens your browser to the localhost 4200. So as you can see the development server has automatically opened the page that you see is the welcome page. And in order to build your application. All you have to do is modify this so now I'll get back to my command prompt. And I'll just type in code don't so that I can open this in Visual Studio code. Okay. So as you can see a project has been opened earlier in the session. I've already told you guys what each of these file does now, what I'm going to do is just open up the source file get into the app folder. So the source folder is the basic folder where I'm going to manipulate staffs in order to create an application. So I'll just open app component dot HTML page and over here. I'll select everything except the last line and I'll delete it. So now let me just write a simple statement within the H1 tag. I'll say welcome to Ed, Eureka. So now I'll just save this and see if my project is still working. Okay, so as you can see over here previously, I had the default welcome page of angular and now it's changed to what I have typed in my app component HTML file. So it looks great. So let's go ahead and build our project. Okay. So this is a very basic application. The next thing that I'm going to do over here is create new components in order to display the information that I want my app to show so to do that. I'm going to create the first component of my application. I'll get back to the command prompt. I'm terminating the development server. It's better to do so because if you keep the server running and then you create a component you'll have to close it and rerun your program again, so that angular gets to know that a new component has been installed. If you do not do this you will. And error saying that the component you created is not found. So what I'm going to do here is Type in the command NG generate component followed by the name of the component. So that is NG generate component. And since my basic component is the courses since I'm creating a template of the editor Cup website. My basic component will have the courses of Eddie Rekha. So what I'm going to do is just name it as courses and I'll hit enter. Okay, angular has created for files. The first is courses taught component dot HTML second is courses taught component. The Spectre TS file. This file is basically used for testing purpose and we're not going to be manipulating this in our project today. Next up is the courses dot component 30s file and then you have your style sheet, which is the CSS file. Now. This CSS file is particular to this component, which is the courses component. So now let's get back to our project and see how these files actually look here is the component that I created. Let me just increase the size. Okay. So as you can see here is the component that I've created and these are the files the first file that I'll open over here is the component DTS file now before starting off angular has already written the basic code. Now, I want you all to note that this component symbol has been imported from the angular code library and then It is annotated to the component class the a trade component decorator. Like I've already told you before will specify angular's metadata for this component. So what our selectors template URLs and style URLs. I've already explained to you earlier in the session. So just a brief about them selector is nothing but the components CSS element selector template URLs tell the location of the components template file and style URLs specify the location of the components private. Style sheets this function which is the engi on init function is a lifecycle hook. Like I've already told you all before and angular calls this function shortly after creating a component. It's a very good place to put initialization logic. Now, the reason why this class has been exported is because it can be imported anywhere else and therefore you will not have to rewrite the code. Okay. So next what I'm going to do is add a course property to the courses component present in my class. Okay, so I'll just type in course. I'll need the scores as angular itself. Next I'll have to show this course. So what I'm going to do is just open up the courses component dot HTML file. I'll replace the statement with an interpolation property that specifies the course. So let me save this do not forget to save any changes you make to your project. To display the courses component. You must add it to the template of the shell of app component. Now, you must remember that app courses is the element selector for the courses component. So to add an app component element to the app component template file. All you have to do is open app component that HTML and over here just type in app courses. Okay, so I hope you guys are clear to here. So now let's get back to our browser and see how it works. Let me just refresh this. I had actually terminated the process. So what I'm going to do is just type in the NG serve command again in case you had not dominated this process and you're trying to reload the page and if you see any errors just terminate the process like I've already shown you earlier in this tutorial how to terminate a process terminate the process that hold 4200 and then rerun your server. Okay, so as you can see over here, I have the course name which is angular previously. I just had one statement which was welcome to Ed. Wake up. So the next thing that I'm going to do over here is create a course class. So next I'm going to create a new file of here analyst named as course Don TS in this file. I will create an export class named course that is going to have the ID number and the name of the course. So I'll just type in export class followed by the name of the class that is course. It's going to have two properties. That is the ID which is of number type and name which is of string type. Okay, let me just save this and then return to the course component 30s file. And then I'll have to import the course class that I just created. So Within These import statements are right import the name of the class, which is course. from dot dot Followed by the name of the file. I've forgotten the / over here. So now I have imported the class. So I'll just come back to this course component class and over here. I'll initialize the ID number and the name of the course. So let me just delete this. This course property is going to be of the type course class. So I'll just type in course equals. the ID number I'll just specify to be one and the name. Okay, so let me just see if this so now I'll jump onto the component dot HTML file courses component dot HTML file and update it over here. So I'll just create a gas h2 tag and within this I'll open up the interpolation braces and I'll specify the course name. So that's course dot name next I want to specify the course ID as well. So what I'm going to do is just create a div class. I'll just open the div tag. And the span tag and then I'll just type in ID and specify course dot ID. I'll just copy this line and I'll do the same for the course name. So now let me just save this and get back to my browser and see how it works. This is a very common error guys. When you encounter any of these just get back to your command prompt and run the NG serve command again, so I'll just terminate this. And I'll rerun NG serve. Okay, I'm sorry guys. I should not specify semicolon over here. Okay. So here it is. I have the name of my project followed by the ID number and then I had specified the name of the project again. So you see it over here. Now the reason why I specified the name of the project over here is just to show you guys how to make use of a pipe. So I'll get back to my project and within the course component dot HTML file in the first place where I've specified the course name. I'll just add in a pipe and I'll make use of the uppercase pipe. This is going to change all the letters present in the course name to uppercase. So I'll just save this get back to my project and the project has reloaded. Now the name of angular is displayed in blocks. Okay, so I hope you guys are clear as you'll hear the word uppercase that I'm using over here is a form of interpolation binding. It's coming right after the pipe operator. So this is how you make use of pipes in angular pipes are a very good way to format strings currency amounts dates Etc. And angular ships with several built-in pipes and you can create your own as well. So since I'm the admin user I should be able to manipulate the name of the course as well. The text box should be able to display the course name property and updates the property as I give the input. This means that the data will flow from the component class out to the screen and from the screen back to the class again to automate this data flow. You can set up to a data binding between the input tag and the course To name property. Okay. So what I'm going to do is open the course.com when I dot HTML file and over here, so in place of span as just use label and then I'll make use of the input tag and then the two-way data binding syntax NG model followed by the course name. And the placeholder the placeholder in this case is name. So I'll specify name. / I'll just save this. I don't need this anymore. So just remove it off. This NG model is angular's two-way data binding syntax here. It binds the course name property to the HTML text box. So that data can flow in both directions that is from the course name property to the text box and from the text box back to the course name. Okay now when I try to Run this on my development server. You will see that it will not show me any output. I'll just refresh it and show you guys so as you can see over here, it's not showing any output. Now this is because I have to add NG model as it is not available by default. I'm going to open up the app dot module dot t-- s file and over here. I'm going to import or L simply copy this and then Port forms module. from the angular / forms Library The NG model is actually contained within this library now. Once this is done. I'll have to import it within the import array as well. So just type in a comment over here and then I'll import the forms module. Okay. Now I'll save this I'll get back to my browser and reload it. Okay. So as you can see over here and input text box has been created now when I try to manipulate any of these you can see that the corresponding change is represented in the name of the course. Okay, so I'll get back to my project. Now. The next thing that I'm going to do is declare the course component every component must be declared exactly once in NG module. So if you guys have noticed one thing I did not import this course component class manually over here. What I've done over here is already installed an Auto Import package. So let me just show you guys or to import. Okay, so this will automatically find import and pass the required code in your project. So it's better. If you guys install this you will not have to manually import anything that is required by your application and the moment you create any component it is going to be imported by default. The next thing that I'm going to do is create a mock courses file. What I'm going to do is create a list of courses within this mock courses 30s file and then I'm going to display it on my console the file that I'm going to create will lie within the app folder. So just right click select new file and I'll name this file as mock courses 30s. Now within this file. The first thing that I'm going to do is import this course class present in the course dot t-- s file. So the first statement over here is going to be important the name of the class, which is course. Okay. So as you can see I've important the course class from the course file next. I'm going to create an export class and this is going to be constant the name of this class is going to be courses and this is going to be of the course Class Type. And since it's going to hold more than one values, it's going to be an array. I forgot to specify the square brackets. Okay. So within this I'll have key value pairs where the keys will be the ID and the name and the values will be the corresponding ID numbers and the names of the courses. Okay. The idea of the first course is going to be 0 1 followed by the name, which is a string and the name of the first course is going to be C plus plus for example. I'm supposed to specify an equal to symbol guys. So that is why I'm getting the error. Okay. So the ID is one name is C plus plus so similarly. I'll specify a few more courses. I'll just copy this. I'll change the ID numbers and the names this ID 2 3 4 5 6 and 7. I'll just change the course names as well. Okay. So now I have specified a list of courses and I'll just close this and I'll save this file if I have to display these courses. I have to get back to courses tab component 30s file and over here. I'll have to import the courses class that I just created. So I'll just type in import the name of the class. So as you can see the moment, I type what I want to import its Auto imported in my file over here. This is because of the Auto Import feature, so let me just remove this. And see if it okay. Next thing they'll have to do is make changes in the courses component class. Okay. So what I'm going to do is replace all this and I'll simply say that the property courses is of type courses, which is the class instead of: I'll have to specify an equal to sign be careful with these minor things because it's going to make a Major Impact. So now I'll open the courses dot HTML file and over here. I'm going to make some changes. I'll just remove this and within the h2 tag, I'll just say courses at Ed, Eureka. And then I'm going to specify a list. So what I'm going to do is just remove this. I'll create an unordered list. And this is going to be of the Class Type courses. Next I'll have to specify the list die. And then I'll use the span tag within which I'll specify the class as batch. And then the interpolation symbol within this I'm going to specify the course ID. And then I'm going to specify the name of the course. Okay. So once this is done, I'll just save this. Okay. So this is going to return one course to list all the courses. I'll have to make use of ng4. And G4 is angular's repeater directive. It repeats the host element for each and every element that is present in the list. The courses list should be attractive and should respond virtually to the user when he hovers over the course list to do that. You could add more style to the Styles dot CSS file and keep growing that style sheet in order to match your specifications so you can add in Any CSS that you want to be here in order to display or output as per your requirement? Okay. So now what I want to do is enable the user to see the details of a course when he clicks on any of the course that's present in the list initially. I will be displaying the details of this course at the end of the page. So to do that, I'll have to add a click event. Now the click event. Like I've already told y'all is the type of event binding. So before I make any more changes to this HTML file, I'll get back to the courses that component 30s file and over here. I'm going to make the required changes. So the first thing that I'm going to do is add a selected course component. I'm going to add a selected course property and this is going to be of the type course after this. I'm going to create a new function and the name of this function is going to be on select. So on select of course, which is of type class that is course class. The return type is going to be void. And within this I'll just return this dot selected course and this will be equal to the course itself. Okay. So now this is done. I'll just save this. I'll get back to my HTML file and make the corresponding changes. Okay, like I've already told y'all I'm going to make use of ng4. So that comes within the list tag. The ng4 will be preceded by an asterisk symbol. So NG capital F for now, let course of courses. And then within square brackets, I'm going to specify class dot selected equals course Triple equal to selected course. Okay, so now I'll create a click event over here. So when you click on any of the selected courses, I'll have to call the on select function and this takes one parameter, which is the course itself. Okay. So now that is done. Okay. I'll just remove this list type from here. So now my courses dot HTML file is ready in case the user select any of the course that's present in the list. I want to display the details of it now to do that. What I have to do is include ng- if so I'll specify that within the div tag just like ng4, even ng-if is going to be preceded by an asterisk symbol. So if any course is selected, I'll specify an H2 tag and within this I'll specify the name of the course in caps. And then I'll just say that these are the details within this I'll create another div tag and span. selected courses ID and then the name of the course itself So now I've made all the required changes. And I already have some CSS ready for this. I'll just copy paste that from my previous files. Okay, so now I'll just save this. So let me just show you guys the final code. So here it is. I have a for Loop then I have an if condition I'll have a list of all the courses that have specified within the Smock courses file plus if I select any of these courses, I'll have the details of that course displayed. Let me get back to my development server. So as you can see over here, I have a list of all the courses and when I select any of these I'll have the details of that course reviewed over here. So as you can see Somehow I'd select the courses the details get updated. So now what I'm going to do is create a separate Details page for this course details instead of displaying all the details at the end of my page. I'm going to create a separate component that will hold the details of each course and it will display the details of the course when the course is selected. So what I'm going to do is get back to my command prompt. I'll just terminate this. And I'll clear the screen. So now I'll type in the command + g generate component. Followed by the name of the component which is going to be course detail. And I hit enter a new component has been created with the four files. That is the HTML file the test file the component DTS file and the component dot CSS file. So now I'll get back to my project. And what I'm going to do is just cut this part. And I'll open the details file or the details dot HTML file. And then paste it over here. Rather than making a single congested HTML file. All I've done over here is created a separate component which is going to hold the details of the course. So now I'll go to the course details dot component Don TS file and over here. I'll have to import the course class. The course property must be an impact property and it should be annotated by an input decorator. Now this is because the external course component will have to bind it. So I should add another import statement over here where and I'm going to import the component on in it and the input functions. So I'll just type in import. I'm not going to type in separately over here or I'm going to do is add it in with in the statement itself. So I just say, input. So next up, what I'm going to do is add in the editor it input decorator within the course detail component class so specify at the rate input decorator and this is for the course which is of the course Class Type. So now my details dot component 30s file is ready. Just save this. So now I'll get back to courses taught component dot HTML file and over here. I'll have to specify the course detail binding. So what I'm going to do is just include app course detail within this'll have to specify the course property and the target is going to be selected course this course property specified within the square brackets is an example of property binding. Like I've already told you all before the property binding that I've specified over here is one way data binding between the selected course property of the courses component to the course property of the target element. This will map the course property of the course detail component. So, let me just save this. So now in case the user clicks on any of the course present in the list, the selected course will change when the selected course changes the property binding updates the course and the course detail component and displays the new course. So now let's get back to our browser and see how this works. I'll just refresh this. I'll have to rerun the server. So as you can see over here, my browser has reloaded the moment. I click on any of these Pages. I'm supposed to see the output of the details of that course over here. Now when I select any of these courses, I'm not able to see the details of it. So let me get back to my details dot HTML page. Okay. So here it is. So it's not supposed to be selected course. It's just course it is because I was referring to the course property unlike the selected crows property of the previous. So just change that everywhere. It's going to be course. Let me just save this get back to my browser and rerun it. So now if I select any of the course details the details are displayed at the bottom of this page. One thing I want you guys to note is that previously these details were rendered by the same component. That was the course is component. Now, these details are entered by The Details page rather than the courses component itself. So the next thing that we are going to do over here is add in some services. Competent student fetch data or save data directly. They should focus on presenting data and delegate data access to a service in this tutorial. I'm going to show you guys how to create a course service that all application classes can use to get the courses to do this. I'll be relying on the dependency injection of angular services are a great way to share information among classes that do not know each other here. I'm going to create a message service and inject it into places that is The core service which uses the service to send a message and in the message component itself, which will display the message. So what I'm going to do is get back to my command prompt. I'll terminate this. until the screen again next I'm going to write and g generate service. And the name will be course. Okay. I've made a spelling mistake. It's Ser V.I.C. So now our service class is ready. So what I'm going to do is get back to my project. I'll open up the newly created service Dutch TS file here. I'll have to import the course class. So I'll just type in import. the course class and also I want to import the courses class. So both are done. Next I'll be adding the get causes property. This property is going to be of the course type. So within this class over here and type in get courses Which is of the type course itself. And within this function, I just have one return statement. That is going to return the courses. Okay, just save this. So once this is done I'd have to make the core service available to the dependency injection system before angular can inject it for that. I'll have to register a provider a provider. Like I've already told you all before is something that can create or deliver a service in this case. It's going to instantiate the course service class to provide the service. So as you can see over here angular by default registers the provider with the root injector for your service by including the provide. Metadata, when you provide the service at the root level angular creates a single shared instance for the course service and injects it into any class that ask for it registering the provider in and at the rate injectable metadata allows angular to optimize and app by removing the service if it turns out not to be used after all. So the next thing that I'll have to do is get back to the course component 30s file. So now I'll have to import the course service. And that I just save it so next. I'm going to remove the selected course property. And I'll make the previous one as an array and this will be of the type course to add a private course service parameter of the course service to the Constructor. All I'm going to do is go on to this Constructor and I'm going to specify private and the name of the service which is course service and this is of type course service class. So this bottom eat oval simultaneously defined a private course service property and identifies it as a core service injection site when angular creates a course component the dependency injection system sets the course service parameter to the Singleton instance, of course service now, I'm going to add another method of here. So I've made use of the selected course property. So what I'm going to do is just included over here. Sorry for that guy's I deleted it thinking that I have not made use of the Opti The next thing that I have to do over here is include another function and this is going to be the get courses function. I'll just specify the type of it as void. So within this I'm going to have an arrow function, so if you do not know what is an arrow function just get back to the part where I'm explaining Arrow functions in typescript, so this dot course service dot get courses function subscribe and the parameter which is courses. this dot courses I will shortly be telling you guys why this error is appearing over here. I have to make a small change in my code and this error is going to disappear. So I'll get back to the course service 30s file and over here. I'm going to import observable and off. From our exchanges just delete this line. So within this get courses function over here I'll be making a small change I'll just include observable of the type course. And over here it's going to be return of courses. Okay, so now the error should be fixed. Okay. So as you can see over here, I don't see an error anymore. The off course is over here will return an observable course that emits a single value and that will be the array of mock courses the observable function will emit an array of courses the subscriber third passes the emitted array to the Callback which sets the components course property. So I'll just see if this next up I'm going to generate another component which is the messages component. So I'll get back to my command prompt and over here and degenerate and this is a component messages. Okay, so I have a new component named messages in my application of here. Now this component will actually display the applications messages at the bottom of the screen. Since I've created a new component of here, I'll have to get back to the app not component dot HTML file and I have to include it over here. So I'll just specify app. I'll just save this. Okay. So now when I get back to my browser and read on this I'll have to run the server again. Okay, so now let's get back to our browser. Okay. So as you can see over here, my browser says that messages is working which means that this component is working fine. So the next thing that I'm going to do over here is create a message service, so I'll get back to my command prompt. And I'll specify NG generate service messages. Okay, so now let's get back to our project within this file over here, which is messages dot service tortillas file. I'll create a property which is messages. It's going to be of the string type. And for now I'll just keep it as an empty string next. I'll create an ad next I'll be creating an ad function to this. I'll add the message which is of the type string. Isn't this I just have a single statement, which is this dot messages. Don't push. I'll just say message. Okay, I'll specify another function within this I'll add a clear function and then this dot messages. Equals an empty array. Okay. So now I'll save this now. What I'm going to do is inject this into the core services. So I'll open the course service 30s file. And the first thing that I'm going to do is import the message service. Now I'll come down to the Constructor present in the core service class and I'm going to modify it. I'll just say private message service is of type messages service. Okay. So the next thing that I'm going to do is send a message from the course service and then display the message from the core service. Okay. What I'm doing over here is just modifying this get course class. I already pasted the code that I have. So I'll just delete this and I'll save it. So here it is. I've actually not retrieved the courses. So I'll just specify this dot get courses and that's a function. I'll save this and let me check if I've missed anything else. This is fine. Get courses the add subscribe courses. Okay here is not the step that I've missed. So this is equal to the courses itself. Now, I'll save this I'll get back to my development server. Okay. So here are the list of courses who one thing that I've not done is I'll open Messages component 30s since this is the main file. Okay, here it is. I've not included messages service over here. So what I'm going to do is just import it message service. And the next thing that I'll have to do is specify a public parameter that I'm going to name it as message service and this is going to be of type messages service. Now I'll just save this and I'll get back to my browser. Okay, so now my message is component is working. So the moment I click on any of these I'll have the details plus a message will be added over here. Okay. So now let's get back to our project. The next thing that we'll be doing over here is routing. In angular the best practice is to load and configure the router in a separate top-level module that is dedicated to routing and import it by the root at module by convention. The module class name is approaching module and it belongs to the app routing module dot t-- S Class. No, in case you have to generate that, all you have to do is get back to your command prompt. And over here, you'll have to run the command and generate module NG approaching followed by - flat - module equals app. Okay, looks like I've already created it earlier so I don't have to create it again. However, let me just tell you the double - flat puts the file in the source App instead of its own folder double - module equals app will tell the CLI to register it in the Imports array of the app module. Okay. So let me just get back to my project and check for it to be here. So that's a pruiting module. So here it is. So this is the default approaching module that is presented by angular. So I'm going to modify this file in order to suit my project. So the first thing that we're going to do over here is import course component and I'm going to modify this constant Roots variable and then I'm going to modify. This constant are also variable So within this and just specify a path so the path will be first count courses and then the component is going to be course component. Okay, so now I'll just save this at first the approaching module will import router module and routes. So the app can have routing functionality next the course component will give router somewhere to go. Once you configure the routes a typical angular route will have two properties one is the path and second is the component a path is nothing but the string that will match the URL in the browser address bar component is the component that the router should create when navigating to this route. This will tell the router to match the URL to the part. Okay. So what I'm going to do here is get back to my command prompt and over here. I'll type the command NG generate component. And I'll just call this component as home or rather. I'll call it as dashboard which I've shown you earlier. So as you can see over here a new component has been created instead of typing the code manually over here. I'll just copy paste it and I'll explain it to you guys later on. So here is the modified approaching module dot t-- s file this line over here is importing the router module to the Imports array and also it configures it with the routes in one step by calling the router module dot for Road method. The method is called as for wrote Because you configure the router at the applications Roots level. Forward method Supply service providers and directives needed for routing and performs the initial navigation based on the current browser's URL. Next is the export router module. Now this is to make this router module available throughout our application. So now let me just open the app component dot HTML file and over here. You've already seen this router Outlet present. Now this was already done because during the initial stages of the project when we were creating the project there were two questions that were asked. Which the first one was if you want to add routing to your project and there we had specified. Yes. And therefore this is already included in the app component dot HTML file. I just want you guys to know this router link over here. Basically, my project has two pages. The first is the dashboard and second is the courses page. The dashboard is nothing but the home page and the courses page will consist of a list that contains all the courses that are available. So now let me just show you all the dashboard file over here. So here is the dashboard it contains four of the top courses and G4. Like I've already told you all before is a repeater and it creates as many links as the components courses array. So let me just open this app routing module 2 TS file so over here and empty part means that this is my dashboard if there is no extension or an extension having dashboard. It is going to be my home page or my dashboard next when I select any of these courses the path will be redirected to detail plus the the ID of that course, so let me just show this to you guys. I'll open my project so over here when I click on any of these courses, so it's redirected to The Details page of that particular course and the details of that page so over here, we are specifying the detail plus the course is ID as the path next up is the path courses where and we make use of the course component. Let me just get back the moment. I select this course is a teddy. Well, you will see a list of courses that are available over here so that were all the four parts that are available in my project. So this brings us to the end of this project. I hope you guys have enjoyed and learned something new in case you have any doubts or queries. Please do let me know in the comment section and I will revert to you at the earliest good bye and take care. I hope you have enjoyed listening to this video. Please be kind enough to like it and you can comment any of your doubts and queries and we will reply. Them at the earliest do look out for more videos in our playlist And subscribe to Edureka channel to learn more. Happy learning.
Info
Channel: edureka!
Views: 382,682
Rating: undefined out of 5
Keywords: yt:cc=on, angular 8, angular 8 tutorial, angular tutorial, angular tutorial for beginners, angular 8 tutorial for beginners, angular tutorial from scratch, learn angular, angular 8 project, angular tutorial edureka, angular frontend tutorial, angular training, angular web development tutorial, angular web development, angular dependency injection, angular framework tutorial, angular project example, angular project structure, edureka, angular edureka
Id: pTec1e8oyc8
Channel Id: undefined
Length: 125min 22sec (7522 seconds)
Published: Sun Feb 02 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.