If you have the error where your variables have not been initialized = that's because typescript requires you to initialize your variables similiar to strongly typed languages. While you should have a default value set and work with this feature to really utilize typescript, for this small 'project' you could just put an exclamation mark before your variables and it will let you leave them uninitialized, for example: subscription!: Subscription; or @Input() task!: Task;
26:28 Had issues with the [ngStyle] attribute I did instead: [style.background-color]="color" - Update, also just learned that the default mode for components is standalone now. Which means whenever he is going to the app.module.ts to import something, just import it to the component you need it in. standalone = modules are for only that component.
If you're using Angular 17, you do have to import the component, at least I had to in order to get this to work. Example below: app.component.html import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterOutlet } from '@angular/router'; import { HeaderComponent } from './components/header/header.component'; @Component({ selector: 'app-root', standalone: true, imports: [CommonModule, RouterOutlet, HeaderComponent], templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { title = 'angular-crash'; }
Thanks man, you also saved me! I was under the impression that it had to do with Brad using a previous version of Angular, but I didn't completely understand the instructions provided in the error. Just as a suggestion: you should probably clarify that the code above is from app.component.ts., not app.component.html. Anyway, you made my day :)
I was fighting my way through Udemy course I bought for several days, and after watching 30 minutes of this crash course I already understand more Angular than ever! I am so happy this course appeared today! Thank you so much Brad! If I land a job first thing I'll do I will buy some of your courses.
Thanks so much Brad. Thanks to this tutorial, I got my first job as a Software Engineer. Your life story is so inspiring and motivated me in my journey. I was a mechanical engineer and with so much hard work, I was able to shift my career. And on that journey, you played a most crucial role. May gods blessings be with you every day. Love and Respect form Sri Lanka ❤️
If you are using the latest version of ts then make sure to declare your variables in the constructor otherwise it will throw an error. You can also use an ! sign after the variables. For example, @Input task!: Task;
Hey Brad you have built really an awesome channel over the years. Even though I don't really spend much time with Web Dev anymore, I still like to come back from time to time and watch your content, as well as your insights on life/work/mental health etc... Truly amazing work
I saw this tutorial 2 times, and it was well organized tutorial for a new learners means most concepts needed in Angular in just 2 hours with small todo app. Did a good job!
I've been following React, Vue, and Angular here, and in my opinion: 1. The advantage is that angular separate everything in the name of the component folder, which makes it easy to track the code. 2. Another thing is that the observable and subscription pattern ensures the asynchronous actions are clear and robust. 3. Default typescript. The points mentioned are fonds of debugging to refactoring. ----- 3. However, one component has four files, and sometimes it could be messy. Lots of files are kinds of mental attacks when switching and looking for files. 4. Angular exposes more complexity to the developer that one must first learn the class, constructor, implement, and the public, private data types. Otherwise, it could be challenging to understand. Instead, React and Vue hides those complexities, which are more user-friendly. 5. ng generate xxxxx is annoying.
As a little help, you can also use "g" instead of typing generate, and the same goes to component with "c", so you can just use "ng g c" and the name of it. Hope this helps a little bit!
"Angular exposes more complexity to the developer that one must first learn the class, constructor, implement, and the public, private data types". You should be thanking Angular because of this. Becuase they are the very fundamental of software developing, if you don't need them with other libraries/frameworks today, you'll need if not now but tomorrow so learning the basics of OOP is always good. Also if you don't want, you may not use ng generate, you can manually create your files and register to modules yourself. ng g just makes everything easier.
56:22 Brad, you can double click a word to select it, type " and VSCode will wrap the word in quotes instead of what you would normally think it would do, which is to replace the word with a ".
at 25:28 when Brad declares the @Input, if you get an error "Property has no initializer and is not definitely assigned in the constructor"' you can write it like @Input() text!: string; this is a temporary fix OR @Input() "text": string; is the same OR keep it the same as how Brad writes it and just assign it by writing this.text=" " in the constructor.
Can I just say I love the little notes and comparisons you sprinkle in for people who are coming from React Like saying "It's like props" or "You don't need to import this here" for example It actually really helped me better understand this, and of course this is an amazing video as usual overall! Thank you!
I was getting this error while declaring "onDelete(task)" (1:04:50): Parameter 'task' implicitly has an 'any' type.ts(7006) angular. I fixed declaring as "onDelete(task: any)". It's also possible to change "noImplicitAny": false, at "tsconfig.json" file, but I didn't tried this way.
Thank you very much, your comment helped me right away. I think it's better that I get used to declaring variable type, as that is a great feature of TypeScript. By the way, to be more precise set variable type to Task.
i started watching your video in 2017 (html website development) when i was jobless, and now when i hear your voice, it reminds me where i was and where i am! Thankyou! God bless.
Just recently started learning Angular since the company I work for requires you to learn it and I want to teach myself Ionic at some point. I use to not like Angular, but I am starting to really enjoy it. Mainly because of how simple it is to build components and services to integrate existing third party APIs. Hope it will be here to stay for a long time🙂
This is a magnificent tutorial. A month ago I watched it, having had a background which included AngularJS several years ago, and now I'm flying with the Angular 13. It's such a fun framework to develop with once you're over the learning curve, and getting over it was 100% thanks to you. Great stuff!
Since the project is fairly simple, you could embed the HTML and CSS code in the "ts" files reducing "files hopping", also you can create a minimal app with "ng new ##name## --minimal" , this way you reduce to 1 the number of files per component, furthermore you can create minimal components with the "-s -t" options at the end of the command.
For minor corrections which actually mislead begginers most of the time is when you used a function call directly into the *ngIf condition for add task button. It does effect an application of this size but it does affect larger applications as a function can always have a different output.
excellent! so clear and easy to follow, i am a 30 year IT professional and 18 year .NET developer and needed to look at this for new versions of my company's applications. Great first step and now that i see how the architecture is structured it is much less confusing than the first attempt made at understanding it. I am subscribed and can't wait to watch the other videos.
Brilliantly explained ... I've been doing Angular related projects for a while but mostly it was a Google search to get different things done, with your course, everything is covered so wonderfully that now I have a better hang of it. Thanks a ton ... Keep up the good work !!!
1:51:00 - For anyone who's routes are not showing up clickable, in the newer Angular 17 it seems you have to do everything at the component level. In the about.component.ts file, I imported RouterModule and then added RouterModule to the imports array in the component function below and the link now works.
@@abcdabcd8605 Sure so at the top of your .ts file you will import RouterModule. Then you have to go into the @Component > imports array > and add RouterModule to that. Along with any other imports you may need to feed into the corresponding html file
Probably the best Angular tutorial I've ever seen... You really helped me to understand the framework and it's function! Especially the combination of Frontend and Backend... Thank you very much!!
Brad I wish Django Course like this, hope you see this :) and all I want to say is thanks for everything you have done for the community, you are great man among us.
Tip: Most of the pain of Angular is removed when you use its Template observable binding features instead of Component binding via the 'async pipe' (eg *ngFor let task of tasks$ | async). This cuts out about 80% of code in your component.ts as the async pipe handles all the observable subscribes/unsubscribes for you. Best rule I found: manual component subscription => code smells, auto template subscription => blessed life, all remaining mandatory subscriptions abstract away into a service if possible. Great crash course for beginners though, awesome content!
1:07:16 Your event binding (onDeleteTask)="deleteTask(task)" is not actually taking the task from the event data. It's getting the task as part of the ngFor directive, ie. from the current component's state (tasks.component.ts). To call deleteTask() with the actual data from the onDeleteTask event, you need to call deleteTask($event) when this event fires. $event is Angular convention and is any object that you might have passed to the emit function of the EventEmitter (ie. 1:06:30 this.onDeleteTask.emit(task)). So basically $event === task here, the actual task that is correlated to the correct X icon/button that was clicked. Both version are correct functionally and do the same thing in the end, but to me, it seems more logically correct to use the actual data that comes with the event when you handle one and not handle some other data in this case.
I figured my error in particular: I had @Output() onAddTAsk: EventEmitter = new EventEmitter(); istead of @Output() onAddTask: EventEmitter = new EventEmitter(); in the add-task.component.ts So key sensitivity is something to look out for :)
I completed learning Spring Boot yesterday. Then, I wanted to learn a JS framework. I fixed on Angular. And Now I get this notification. Thank you Brad 👍✌️. You are life savior buddy🙏
4 years ago I started my career with great help from traversy media tutorials. 4 years later I’m still learning new things and traversy always seems to have a good tutorial no matter what I am learning … this channel is the best. Thanks so much for all the content .
Coming from React I'm finding this quite challenging to be honest. My brain is so used to JSX and state, that all of this seems really hard to remember. Especially rxjs. I know it will take up quite a lot of time to be comfortable, but this video is a good starting point. I landed a job which requires me to code in Angular, hopefully I will be productive with it soon. Thanks Brad!
@@123userthatsme Is that the reason why when deleting a task he is doing it both from the db AND filtering it out from the UI? I thought when you delete it from the db it automatically updates the UI since we have getTasks() in the onInit method
@@stefannikolovski3167 The ngOnInit() hook only gets fired when the component is created, so if you want to fetch the data again later you need to implement that some other way. Generally speaking, when you’re interacting with data via HTTP requests, you don’t want to make unnecessary requests, so you don’t want to do another HTTP GET after the HTTP DELETE if you don’t need to (in this case you don’t need to). So you just delete in the DB and if that is successful you delete in the UI.
Thank you so much for that crash course! I think you covered all the fundamentals in building an Angular app. No boring lectures, just straight coding which is what I need!
In case you getting this compilation error- Property '…' has no initializer and is not definitely assigned in the constructor, add this in tsconfig.json - "strictPropertyInitialization": false
Although I've never been a huge Web Programming fan, after going through this tutorial, I suddenly feel the urge to create more apps using Angular. It's just so nice, fast and practical.
36:21 Had issues with the *ngFor Fixed By: In your tasks.component.ts file - import CommonModule - Add CommonModule to the imports list in your Component Declaration
I used to see comments where people mention that they were thinking about a tutorial and then their TH-camr uploads the video on the same topic. The same thing happened with me finally :)
I followed this entire course and made my first project in angular, thank you! Your presentation was really good,and easy to follow through. One suggestion I only have is to name variables differently across components for example at 37:57, too many things had name 'task. It all works well like that, but as a beginner who seeks to understand how parameters are passed and how angular works in general, it would make more sense to me if I was able to discern exactly which property is referenced and where.
1:04:36 Do you really need to emit 'onDelete' and 'onToggle' events with a 'task' value? In my opinion you could leave that blank because a parent component (in that case 'task' component) already knows from which component this event is emitted. And because of that parent component is able to take this event and call it's method with a correct task object. 1:19:52 don't you think that toggling 'task.reminder = !task.reminder' should be done after put request is successfully completed? That is - inside subscribe method? 1:43:02 why do we need 'subscription` variable, if we do not use it anywhere? Also in case of strict typescript checking in the new TS version - it will force us to initialize 'showAddTask' variable. And in that case it would be good idea to initialize it with the same value everywhere.
Wanted to appreciate the effort you put to make the points clear. Great teaching skill❤️. This angular 2 hr course is enough to build great applications.👍 covers all topics. 👏
I'm stuck at 25:45. When I put the @Input() text: string; and color annotations in button.component it gives me an error and will not transpile. Property 'text' has no initializer and is not definitely assigned in the constructor.ts(2564)
This tutorial was awesome, normally I would just lurk but I felt a need to say how much I appreciate you making this video. As you led on, my background is with React so I agree Angular can be a little more tricky but I'm tempted to watch your React video as well just because I like your style so much and see if I pick up anything
This is a great Angular crash course. It is very practical, simulating to the real world. The teaching is very clear, well organized and presented. Strongly recommended!
@@jgttech Well, I dealt with other frameworks like Vue and Svelte as well as React library and in the end I found that Angular was the best choice for me but unlike you, my preference for a specific framework doesn't mean that I don't respect other frameworks.
As an old grumpy db/backend coot spending 2 days with our company's UI Doctor trying to bash just the basics of JavaScript and Angular through my thick skull i can say i learned more in the first 30 minutes here... Thanks!
This was a really awesome course that I had ever followed. The tutorials I used to watch used the localstorage to store the data. But you took us on a full journey of angular. Thanks Brad!
Who put a dislike to our buddy Brad? 🤔 ... All my success, my man ... You deserve 10k likes in every video cause you're very clear in your explanations 😀😀🚩🚩🙏🙏💪💪
You are just amazing. I had already done your React Crash Course, and now I need to learn Angular. I was having a Udemy course and was an terrible experience. Bad tutor, he was really uncommitted with the student learning. Feels like a word generator. He didn't even explain the project content, just ordered that I clone a pre-made repository and start insanely coding from there. Really overwhelming because you don't know where you are and what you are doing. Your content is just perfect. Rethorical, logic, skills... a real Knowledge Transfer. Thanks a lot.
With Anuglar 17, when adding the button component props, I had to set the strings with empty values to get them to work. Example: @Input() text: string = "";
Angular is good actually. It doesn't deserve the hate it gets. It's sad. I thought of finally deep diving into angular after some years, and you release this video exactly after that. Thanks
@@chitrangsharma bro even updates are not crucial in angular if you learned angular since v2 it still the same until now it gets update on the performance and internal stuff not the syntax or features, and it does not follow MVC Angular follows a component-oriented architecture, mvc can only be on the backend
It's hated because: - it's named poorly - it shouldn't be named Angular anymore, because still people think about Angular 1 after hearing "Angular" to this day (which is ridiculous for me but it is what it is unfortunetly. Blame people) - it's not as minimalistic as React or Vue - but people don't know that it's good (really good), because only Angular gives you 100% compatible features like SSR, PWA etc. right away and it well suits corporate apps with it's strict way of doing things which reduces amount of bad code and architecture by a lot Maybe some day this weird JS community will finally see how many problems Angular solves in this ecosystem
@@DEVDerr You would be surprised how difficult it is to give a good name to your stuff. But then I think they can do better, these guys went from renderer to renderer2(like HOW). There's a componentFactoryResolver and resolveComponentFactory. There's more of these.
Much agreed. Angular allows me to do almost everything I want without downloading any additional dependencies and have a robust and performant web app. But for some reason people were tricked that "Classes" are a bad thing, that JSX somehow is super amazing and Angular directives are not "pure" html and SUPER confusing. Also, only React developers have become NOTORIOUSLY worried about immutability and components knowing their own state, eventually spawning some of the weirdest concepts (like creating a component for a component that holds its state...). Angular and Vue all the way. Maybe now Svelte too... but I'll wait for what Sapper will be replaced by.
I think this would be a great tutorial for my team to get up to speed on Angular. It was neat what you did with the Add button at the end with it detecting the route, which is a good concept to teach. However, your Button component has just become less generic, and if you use this route detection technique specific to your page, which may be one of dozens developed by a team in an enterprise, I doubt your pull request will be passed. Just saying. We have at least a dozen such custom controls in our project, so a great concept to teach. Thank you.
I am new to Angular and was looking for some good resources. This is absolutely awesome! It includes step by step explanation along with some of the best practices
FYI for anybody else working through this tutorial - at about 1:15:00 into the tutorial I added (dblClick)="onToggle(task)" and did not catch the mention that dblclick needs to be all lowercase. Took me a few minutes to figure it out.
Very good and well made course! I liked the Subject/Subscription section. I worked with React and Vue in many projects, but I think Angular, as a framework, is more elegant and well designed. Thank you very much for this video.
25:40 when I try to do @Input() text: string; I get "Property 'text' has no initializer and is not definitely assigned in the constructor." Error. does anyone know why ?
For anyone who is receiving Errors at 26:09 in below declarations @Input() text:string; @Input() color:string; Place an "!" after the name of the variable like this @Input() text!:string; @Input() color!:string; or place this option on tsconfig.json "strictPropertyInitialization": false Are you following up Lerão?!
Hi, is anyone helps me out, please, Actually, I got an error after writing this in task-item.component.ts file => @Input() task: Task; Video time 39:08 Here is an error: Property 'task' has no initializer and is not definitely assigned in the constructor. Please help me out with this.
This is happening because you've started your project using the strict mode, to get rid of this error you should update your ts.config compiler options and set strictPropertyInitialization to false.
Spent about 6 months getting to grips with JavaScript and then a few more months with React. Got my first dev job, started today. First project - Angular. Definitely need a crash course, thank you.
In case anybody wonders why you dont have a app.module.ts file: In the past the command ng new my-app created a module based app as default. But now since angular v17, a standalone (not module based) app is created as default. To have a module based app with the app.module.ts file like in the video, you have to use the following command instead: ng new my-app --no-standalone
Outstanding 🙏❤️😍 I still got so much love for the Big Red A. People shit on because it's a little more challenging. They can't handle the heat of rxjs. Love you bro. 🙏
Sir, I am following your courses from a long time (I am a slow learner ), you are really a good teacher I have finished HTML, CSS, javaScript ( your course on udemy ) . It's a request to you that would you Please make a detailed crash course on Angular( just like your javaScript course on udemy). It would be a great help to the freshers like me to get entry in a IT company (to start a career as a developer) .
None of the Angular courses around can deliver so much value in so short tutorial. Thanks for continuous sharing valuable content. any thing i need, this channel is my first choice to start looking,.
Really good tutorial, I just started to learn Angular and I think this tutorial was very clearly explained and a good start point. Obviously can't just learn Angular in two hours but I believe he did great job in this tutorial.
Great video for getting the kick-start. I would suggest having a few pages open up like app.component.html , app.component.ts , button.component.ts and button.component.html, or write it down on a piece of paper. Then use the pen to draw the flow from one page to another, to get a clear understanding of what's happening. Once you draw it, it gives a clear idea of the road map of whole video since it's such an iterative process. :)
I love this tutorial because it is swift but still clear. Exactly what I'm looking for as a backend developer that doesn't need much background on the underlying concepts.
Hi Brad, I have been following your courses since past 5 years. Amazing work here, really helped me brush all the key angular concepts. Would love to see a short video on ngrx with angular.
Today i got my first job due to your courses. Love and respect for you from pakistan
That’s awesome man, congrats. But it’s due to your hard work. I may have had a helping hand, but you did it. Great job 😊
Congrats man
congrats brother
Congrats bro.
Congrats
If you have the error where your variables have not been initialized = that's because typescript requires you to initialize your variables similiar to strongly typed languages. While you should have a default value set and work with this feature to really utilize typescript, for this small 'project' you could just put an exclamation mark before your variables and it will let you leave them uninitialized, for example: subscription!: Subscription; or @Input() task!: Task;
thank you! i had this issue. also when the button component was created, there was no import for Input, so had an error on @Input.
You saved me bro, thank you
Thanks a lot, I couldn't find the way to make it work
ty man! that was very helpful
Thanks. Spent the whole day trying to resolve this..
26:28 Had issues with the [ngStyle] attribute
I did instead:
[style.background-color]="color"
- Update, also just learned that the default mode for components is standalone now. Which means whenever he is going to the app.module.ts to import something, just import it to the component you need it in. standalone = modules are for only that component.
If you're using Angular 17, you do have to import the component, at least I had to in order to get this to work. Example below:
app.component.html
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterOutlet } from '@angular/router';
import { HeaderComponent } from './components/header/header.component';
@Component({
selector: 'app-root',
standalone: true,
imports: [CommonModule, RouterOutlet, HeaderComponent],
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'angular-crash';
}
Thank you for this! I thought I was going crazy. Would be cool if OP would update this whole tutorial for V17 on upward.
Thank you!!!
Thanks man, you also saved me! I was under the impression that it had to do with Brad using a previous version of Angular, but I didn't completely understand the instructions provided in the error. Just as a suggestion: you should probably clarify that the code above is from app.component.ts., not app.component.html.
Anyway, you made my day :)
Ils in .ts ont .html but thank you
thanks bruv
I think this is by far the most complete Angular tutorial done in two hours.. although it is not meant for a total beginner. Well done.. tq.
Unfortunately some of us are total beginner
@@dantshisungu395 for total beginners, I would recommend doing a lot of JavaScript learning (and also HTML and CSS) before learning Angular.
We need a full course Brad! You explain so much better than all those other instructors!
he kinda did. you can learn everything else on your own bit by bit, as you should
I was fighting my way through Udemy course I bought for several days, and after watching 30 minutes of this crash course I already understand more Angular than ever! I am so happy this course appeared today! Thank you so much Brad! If I land a job first thing I'll do I will buy some of your courses.
Exactly my situation. "Angular Corre Deep Dive", terrible experience.
Thanks so much Brad. Thanks to this tutorial, I got my first job as a Software Engineer. Your life story is so inspiring and motivated me in my journey. I was a mechanical engineer and with so much hard work, I was able to shift my career. And on that journey, you played a most crucial role. May gods blessings be with you every day. Love and Respect form Sri Lanka ❤️
If you are using the latest version of ts then make sure to declare your variables in the constructor otherwise it will throw an error.
You can also use an ! sign after the variables. For example, @Input task!: Task;
hairtaishu anda
Could you please give another example? I am new to this
" ! " for required variable and " ? " for optional.
For Example:
text?: string;
day!: string;
I'm using Angular 12 btw.
please give snippet of how to do it in constructor
@@rajatnegi3896 at 25:40 i used the following code:
import { Component, OnInit , Input} from '@angular/core';
@Component({
selector: 'app-button',
templateUrl: './button.component.html',
styleUrls: ['./button.component.css']
})
export class ButtonComponent implements OnInit {
@Input() text!: string;
@Input() color!: string;
constructor() { }
ngOnInit(): void {
}
}
Hey Brad you have built really an awesome channel over the years. Even though I don't really spend much time with Web Dev anymore, I still like to come back from time to time and watch your content, as well as your insights on life/work/mental health etc... Truly amazing work
Thank you 🙏🏼
You cannot imagine how much happy I was to get notification about this course😍
me too
аналогично
+1 Очень вовремя)
You and me both!
You cannot imagine how much happy I was also.
I saw this tutorial 2 times, and it was well organized tutorial for a new learners means most concepts needed in Angular in just 2 hours with small todo app.
Did a good job!
I've been following React, Vue, and Angular here, and in my opinion:
1. The advantage is that angular separate everything in the name of the component folder, which makes it easy to track the code.
2. Another thing is that the observable and subscription pattern ensures the asynchronous actions are clear and robust.
3. Default typescript.
The points mentioned are fonds of debugging to refactoring.
-----
3. However, one component has four files, and sometimes it could be messy. Lots of files are kinds of mental attacks when switching and looking for files.
4. Angular exposes more complexity to the developer that one must first learn the class, constructor, implement, and the public, private data types. Otherwise, it could be challenging to understand. Instead, React and Vue hides those complexities, which are more user-friendly.
5. ng generate xxxxx is annoying.
As a little help, you can also use "g" instead of typing generate, and the same goes to component with "c", so you can just use "ng g c" and the name of it. Hope this helps a little bit!
Thank you!
"Angular exposes more complexity to the developer that one must first learn the class, constructor, implement, and the public, private data types". You should be thanking Angular because of this. Becuase they are the very fundamental of software developing, if you don't need them with other libraries/frameworks today, you'll need if not now but tomorrow so learning the basics of OOP is always good. Also if you don't want, you may not use ng generate, you can manually create your files and register to modules yourself. ng g just makes everything easier.
Finally!.. I've been waiting for Angular Crash Course for a long time👍
56:22 Brad, you can double click a word to select it, type " and VSCode will wrap the word in quotes instead of what you would normally think it would do, which is to replace the word with a ".
By pressing CTRL+D you can also select further elements and then type " to replace all at once.
at 25:28 when Brad declares the @Input, if you get an error "Property has no initializer and is not definitely assigned in the constructor"' you can write it like @Input() text!: string; this is a temporary fix OR @Input() "text": string; is the same OR keep it the same as how Brad writes it and just assign it by writing this.text=" " in the constructor.
Can I just say I love the little notes and comparisons you sprinkle in for people who are coming from React
Like saying "It's like props" or "You don't need to import this here" for example
It actually really helped me better understand this, and of course this is an amazing video as usual overall!
Thank you!
I was getting this error while declaring "onDelete(task)" (1:04:50): Parameter 'task' implicitly has an 'any' type.ts(7006) angular. I fixed declaring as "onDelete(task: any)".
It's also possible to change "noImplicitAny": false, at "tsconfig.json" file, but I didn't tried this way.
Thanks!!!
Thank you very much, your comment helped me right away.
I think it's better that I get used to declaring variable type, as that is a great feature of TypeScript.
By the way, to be more precise set variable type to Task.
As @Febo Bebo said, to be precise you should declare "onDelete(task: Task)"
i started watching your video in 2017 (html website development) when i was jobless, and now when i hear your voice, it reminds me where i was and where i am! Thankyou!
God bless.
Best programmer in the world, I really appreciate everything you do, truly learning a LOT from you
Just recently started learning Angular since the company I work for requires you to learn it and I want to teach myself Ionic at some point. I use to not like Angular, but I am starting to really enjoy it. Mainly because of how simple it is to build components and services to integrate existing third party APIs. Hope it will be here to stay for a long time🙂
Same here. I was a vue dev before and after learning angular, I’m enjoying it more
This is a magnificent tutorial. A month ago I watched it, having had a background which included AngularJS several years ago, and now I'm flying with the Angular 13. It's such a fun framework to develop with once you're over the learning curve, and getting over it was 100% thanks to you. Great stuff!
Since the project is fairly simple, you could embed the HTML and CSS code in the "ts" files reducing "files hopping", also you can create a minimal app with "ng new ##name## --minimal" , this way you reduce to 1 the number of files per component, furthermore you can create minimal components with the "-s -t" options at the end of the command.
you made that comment 11 months ago, the video was posted 2 years ago.
@@BusinessWolf1 So both the video and the comment are obsolete now lol
For minor corrections which actually mislead begginers most of the time is when you used a function call directly into the *ngIf condition for add task button. It does effect an application of this size but it does affect larger applications as a function can always have a different output.
excellent! so clear and easy to follow, i am a 30 year IT professional and 18 year .NET developer and needed to look at this for new versions of my company's applications. Great first step and now that i see how the architecture is structured it is much less confusing than the first attempt made at understanding it. I am subscribed and can't wait to watch the other videos.
Brilliantly explained ... I've been doing Angular related projects for a while but mostly it was a Google search to get different things done, with your course, everything is covered so wonderfully that now I have a better hang of it. Thanks a ton ... Keep up the good work !!!
1:51:00 - For anyone who's routes are not showing up clickable, in the newer Angular 17 it seems you have to do everything at the component level. In the about.component.ts file, I imported RouterModule and then added RouterModule to the imports array in the component function below and the link now works.
" then added RouterModule to the imports array in the component function below "
Can you clearly tell where you added RouterModule in imports array?
@@abcdabcd8605 Sure so at the top of your .ts file you will import RouterModule. Then you have to go into the @Component > imports array > and add RouterModule to that. Along with any other imports you may need to feed into the corresponding html file
Probably the best Angular tutorial I've ever seen...
You really helped me to understand the framework and it's function!
Especially the combination of Frontend and Backend...
Thank you very much!!
Brad I wish Django Course like this, hope you see this :) and all I want to say is thanks for everything you have done for the community, you are great man among us.
I have a Django crash course. It is maybe a year old, ut still relevant
@@TraversyMedia :)
@@b1n0ry92 and the Django course just as awesome as all Brad's content. Go get it.
Tip: Most of the pain of Angular is removed when you use its Template observable binding features instead of Component binding via the 'async pipe' (eg *ngFor let task of tasks$ | async). This cuts out about 80% of code in your component.ts as the async pipe handles all the observable subscribes/unsubscribes for you. Best rule I found: manual component subscription => code smells, auto template subscription => blessed life, all remaining mandatory subscriptions abstract away into a service if possible. Great crash course for beginners though, awesome content!
I would like to say I follow, but I don't. Can you point me to some more info on this?
I searched many other courses in yt and even though this is a crash course with older version than actual is still the best around. Keep going Brad!
1:07:16 Your event binding (onDeleteTask)="deleteTask(task)" is not actually taking the task from the event data. It's getting the task as part of the ngFor directive, ie. from the current component's state (tasks.component.ts). To call deleteTask() with the actual data from the onDeleteTask event, you need to call deleteTask($event) when this event fires. $event is Angular convention and is any object that you might have passed to the emit function of the EventEmitter (ie. 1:06:30 this.onDeleteTask.emit(task)). So basically $event === task here, the actual task that is correlated to the correct X icon/button that was clicked. Both version are correct functionally and do the same thing in the end, but to me, it seems more logically correct to use the actual data that comes with the event when you handle one and not handle some other data in this case.
I am getting an error when I use either task or $event during compiling. I am using the latest version of Angular
@@Robitny yea same, did u manage to fix it ?
I figured my error in particular:
I had @Output() onAddTAsk: EventEmitter = new EventEmitter(); istead of
@Output() onAddTask: EventEmitter = new EventEmitter();
in the add-task.component.ts
So key sensitivity is something to look out for :)
I was looking for the people that noticed this as well
Hate being stuck on the minute 1:05:01. Anyone have an easy fix? Did he do changes in tsconfig.json?
I completed learning Spring Boot yesterday. Then, I wanted to learn a JS framework. I fixed on Angular.
And Now I get this notification.
Thank you Brad 👍✌️.
You are life savior buddy🙏
Go with Vue or React, it is better than angular
@@sachin__ak I will learn them later.. But the Orgs in India prefer Angular mostly... That's the reason I am learning Angular
@@sachin__ak Are the companies hiring for React here?
@@sachin__ak You mean it's easier to learn.
@@barryblack8332 yep and developer friendly too, vue js is the most simplest to learn
4 years ago I started my career with great help from traversy media tutorials. 4 years later I’m still learning new things and traversy always seems to have a good tutorial no matter what I am learning … this channel is the best. Thanks so much for all the content .
Coming from React I'm finding this quite challenging to be honest. My brain is so used to JSX and state, that all of this seems really hard to remember. Especially rxjs. I know it will take up quite a lot of time to be comfortable, but this video is a good starting point. I landed a job which requires me to code in Angular, hopefully I will be productive with it soon. Thanks Brad!
Right?! He started adding to task service and I was like "why is his beginner's tutorial stateless??"
If you're having trouble wrapping your head around writing Angular tests, try the suite-slimmer-angular npm library, makes it a lot easier
@@123userthatsme Is that the reason why when deleting a task he is doing it both from the db AND filtering it out from the UI?
I thought when you delete it from the db it automatically updates the UI since we have getTasks() in the onInit method
@@stefannikolovski3167 that's a good point. i don't know why i never thought of it
@@stefannikolovski3167 The ngOnInit() hook only gets fired when the component is created, so if you want to fetch the data again later you need to implement that some other way.
Generally speaking, when you’re interacting with data via HTTP requests, you don’t want to make unnecessary requests, so you don’t want to do another HTTP GET after the HTTP DELETE if you don’t need to (in this case you don’t need to).
So you just delete in the DB and if that is successful you delete in the UI.
Yeah i think angular is best with typescript. Angular has a structure like a building. Its on point Brad!
25:30 @Input() text: string = "";
@Input() color: string = "";
Thanks, upvoted
Thanks a lot! this is so helpful :)
Was looking for this too, thanks
Because of u I was working with good product based company started from zero from your tutorials
Thanks a lot
Thank you so much for that crash course! I think you covered all the fundamentals in building an Angular app.
No boring lectures, just straight coding which is what I need!
In case you getting this compilation error- Property '…' has no initializer and is not definitely assigned in the constructor, add this in tsconfig.json - "strictPropertyInitialization": false
THANK YOU!!!
@@reyalvarez1617 Put it inside the angularCompilerOptions object.
This is what I hate w/ Angular. Every time I try to follow a tutorial, I'll randomly encounter this kind of hiccups.
Thank you sooo much Rajeev.I've been looking for a solution everywhere... thanks a lot
This fix worked. Thanks so much!
Although I've never been a huge Web Programming fan, after going through this tutorial, I suddenly feel the urge to create more apps using Angular. It's just so nice, fast and practical.
What! Angular seems so messy! I don't know!
36:21 Had issues with the *ngFor
Fixed By:
In your tasks.component.ts file
- import CommonModule
- Add CommonModule to the imports list in your Component Declaration
THANK YOU SO MUCH! I was looking forever!
Doing now this old ass angular version tutorial feels like a constant battle. Than you!
Sr. Software engineer here with over 20 years of experience. Thank you for the best course online. ❤
I used to see comments where people mention that they were thinking about a tutorial and then their TH-camr uploads the video on the same topic.
The same thing happened with me finally :)
Never hurts to get a refresher on an Angular crash course. 👍
This is possible the best Angular crash course I have ever watched. You are an amazing teacher, thanks.
I followed this entire course and made my first project in angular, thank you! Your presentation was really good,and easy to follow through. One suggestion I only have is to name variables differently across components for example at 37:57, too many things had name 'task. It all works well like that, but as a beginner who seeks to understand how parameters are passed and how angular works in general, it would make more sense to me if I was able to discern exactly which property is referenced and where.
Did you use Angular 15 ? or which version exactly ?
@@Salma.Louhichi Hi! I used the latest version at that time which was 15.0.1
1:04:36 Do you really need to emit 'onDelete' and 'onToggle' events with a 'task' value?
In my opinion you could leave that blank because a parent component (in that case 'task' component) already knows from which component this event is emitted. And because of that parent component is able to take this event and call it's method with a correct task object.
1:19:52 don't you think that toggling 'task.reminder = !task.reminder' should be done after put request is successfully completed? That is - inside subscribe method?
1:43:02 why do we need 'subscription` variable, if we do not use it anywhere?
Also in case of strict typescript checking in the new TS version - it will force us to initialize 'showAddTask' variable. And in that case it would be good idea to initialize it with the same value everywhere.
hey my toggle for Add button didnt work is there something different u did wrt video?
Waoooooh Greetings from Tanzania, Have been waiting for this one.
React na Angular Developer kutoka Tanzania visiwani (Zanzibar). Nimefurahi kukutana na ww hapa.
Best explanation ever. Already payed for 3 courses on udemy looking for nice explanation and didnt understood anything. Thank you! You are the best
Wanted to appreciate the effort you put to make the points clear. Great teaching skill❤️. This angular 2 hr course is enough to build great applications.👍 covers all topics. 👏
I'm stuck at 25:45. When I put the @Input() text: string; and color annotations in button.component it gives me an error and will not transpile. Property 'text' has no initializer and is not definitely assigned in the constructor.ts(2564)
Hello, thank you so much for this 2 hour tutorial. It's a great help for me who's currently on bootcamp as a full stack developer.
This tutorial was awesome, normally I would just lurk but I felt a need to say how much I appreciate you making this video. As you led on, my background is with React so I agree Angular can be a little more tricky but I'm tempted to watch your React video as well just because I like your style so much and see if I pick up anything
This is a great Angular crash course. It is very practical, simulating to the real world. The teaching is very clear, well organized and presented. Strongly recommended!
Thank you for your tutorials. I've been able to get a job! Full stack and in a great degree thanks to your videos and tutorials. You're the best!
just got hired by state farm, but the team uses Angular instead of React, your videos are definitely helpful, really appreciate it!
Angular is my favorite frontend framework 🔥
Thank you very much 💖
And probably the only one you know if this is your favorite.
@@jgttech
Well, I dealt with other frameworks like Vue and Svelte as well as React library and in the end I found that Angular was the best choice for me but unlike you, my preference for a specific framework doesn't mean that I don't respect other frameworks.
Must say Brad has done a good job in teaching a hard framework and include all features that it provides.
Hey Arnab! Are you a fresher and open to opportunities in web development currently? Have you created any projects in JavaScript frameworks?
You are so clutch with the timing of this video. Thank you, Brad!
The quality and robustness of your tutorial videos is always appreciated.
Brad, we love your work and amazing tutorials. Big fan!!
As an old grumpy db/backend coot spending 2 days with our company's UI Doctor trying to bash just the basics of JavaScript and Angular through my thick skull i can say i learned more in the first 30 minutes here... Thanks!
This was a really awesome course that I had ever followed. The tutorials I used to watch used the localstorage to store the data. But you took us on a full journey of angular. Thanks Brad!
th-cam.com/video/ql77Hk1RTGA/w-d-xo.html
If you encounter error at 25:48, the solution is:
@Input() text!: string;
@Input() color!: string;
Who put a dislike to our buddy Brad? 🤔 ... All my success, my man ... You deserve 10k likes in every video cause you're very clear in your explanations 😀😀🚩🚩🙏🙏💪💪
Ben Awad? 🥕👨🌾🚜
@@kettenbach hahaha 😂😂😂
You are just amazing.
I had already done your React Crash Course, and now I need to learn Angular.
I was having a Udemy course and was an terrible experience. Bad tutor, he was really uncommitted with the student learning. Feels like a word generator.
He didn't even explain the project content, just ordered that I clone a pre-made repository and start insanely coding from there. Really overwhelming because you don't know where you are and what you are doing.
Your content is just perfect. Rethorical, logic, skills... a real Knowledge Transfer.
Thanks a lot.
With Anuglar 17, when adding the button component props, I had to set the strings with empty values to get them to work.
Example:
@Input() text: string = "";
Thanks
If you got an error on 25:40 minute, add ! after value like this: @Input() text!: string;
Angular is good actually. It doesn't deserve the hate it gets. It's sad. I thought of finally deep diving into angular after some years, and you release this video exactly after that. Thanks
@@chitrangsharma bro even updates are not crucial in angular if you learned angular since v2 it still the same until now it gets update on the performance and internal stuff not the syntax or features, and it does not follow MVC Angular follows a component-oriented architecture, mvc can only be on the backend
It's hated because:
- it's named poorly - it shouldn't be named Angular anymore, because still people think about Angular 1 after hearing "Angular" to this day (which is ridiculous for me but it is what it is unfortunetly. Blame people)
- it's not as minimalistic as React or Vue - but people don't know that it's good (really good), because only Angular gives you 100% compatible features like SSR, PWA etc. right away and it well suits corporate apps with it's strict way of doing things which reduces amount of bad code and architecture by a lot
Maybe some day this weird JS community will finally see how many problems Angular solves in this ecosystem
@@DEVDerr You would be surprised how difficult it is to give a good name to your stuff.
But then I think they can do better, these guys went from renderer to renderer2(like HOW).
There's a componentFactoryResolver and
resolveComponentFactory.
There's more of these.
This is not a deep dive into angular by any means
Much agreed. Angular allows me to do almost everything I want without downloading any additional dependencies and have a robust and performant web app. But for some reason people were tricked that "Classes" are a bad thing, that JSX somehow is super amazing and Angular directives are not "pure" html and SUPER confusing. Also, only React developers have become NOTORIOUSLY worried about immutability and components knowing their own state, eventually spawning some of the weirdest concepts (like creating a component for a component that holds its state...). Angular and Vue all the way. Maybe now Svelte too... but I'll wait for what Sapper will be replaced by.
Thank you for this wonderful tutorial! You explain things for WHY you are doing them. Things really started to click after your tutorial. Thank you!!!
I think this would be a great tutorial for my team to get up to speed on Angular. It was neat what you did with the Add button at the end with it detecting the route, which is a good concept to teach. However, your Button component has just become less generic, and if you use this route detection technique specific to your page, which may be one of dozens developed by a team in an enterprise, I doubt your pull request will be passed. Just saying. We have at least a dozen such custom controls in our project, so a great concept to teach. Thank you.
I am new to Angular and was looking for some good resources. This is absolutely awesome! It includes step by step explanation along with some of the best practices
FYI for anybody else working through this tutorial - at about 1:15:00 into the tutorial I added (dblClick)="onToggle(task)" and did not catch the mention that dblclick needs to be all lowercase. Took me a few minutes to figure it out.
Very good and well made course! I liked the Subject/Subscription section.
I worked with React and Vue in many projects, but I think Angular, as a framework, is more elegant and well designed.
Thank you very much for this video.
I have been using Angular for few years now. It’s pretty easy and powerful framework. Also, it’s good for big, complex projects.
25:40
when I try to do @Input() text: string;
I get
"Property 'text' has no initializer and is not definitely assigned in the constructor."
Error.
does anyone know why ?
If anyone got the same problem, i solved it by putting "?" After "text".
@Input() text?: string;
@@nateF888 thanks! that worked for me!
FINALLY. Been waiting for this one 🙏
yes, it took a long time
Thanks. I always find myself back on your channel anytime I need to learn / refresh my memory on a framework. Great videos.
For anyone who is receiving Errors at 26:09 in below declarations
@Input() text:string;
@Input() color:string;
Place an "!" after the name of the variable like this
@Input() text!:string;
@Input() color!:string;
or place this option on tsconfig.json
"strictPropertyInitialization": false
Are you following up Lerão?!
38:48 @Input() task: Task - throws an error. "Object is possibly undefined". To fix this add "!" to the line like so: @Input() task!: Task
Hi, is anyone helps me out, please, Actually, I got an error after writing this in task-item.component.ts file => @Input() task: Task; Video time 39:08 Here is an error: Property 'task' has no initializer and is not definitely assigned in the constructor. Please help me out with this.
This is happening because you've started your project using the strict mode, to get rid of this error you should update your ts.config compiler options and set strictPropertyInitialization to false.
@@gleisonsubzeroKZ thanks bro
Spent about 6 months getting to grips with JavaScript and then a few more months with React. Got my first dev job, started today. First project - Angular. Definitely need a crash course, thank you.
In case anybody wonders why you dont have a app.module.ts file:
In the past the command ng new my-app created a module based app as default.
But now since angular v17, a standalone (not module based) app is created as default.
To have a module based app with the app.module.ts file like in the video, you have to use the following command instead:
ng new my-app --no-standalone
I just switched my job role into UI Development and I am glad I found this video.
Outstanding 🙏❤️😍 I still got so much love for the Big Red A. People shit on because it's a little more challenging. They can't handle the heat of rxjs. Love you bro. 🙏
You are one of the best explainers I've had the privilege of listening to.
Sir, I am following your courses from a long time (I am a slow learner ), you are really a good teacher I have finished HTML, CSS, javaScript ( your course on udemy ) . It's a request to you that would you Please make a detailed crash course on Angular( just like your javaScript course on udemy). It would be a great help to the freshers like me to get entry in a IT company (to start a career as a developer) .
FreeCodeCamp has an Angular for beginners course which is 17 hours long.
@@jannickbreunis thank you very much ...I feel very happy that someOne reply to help...Thanks
@@jannickbreunis That guy doesn't go through the nuances of Angular. He may speak for about 10 secs about providers and move on.
I've only installed Free Solid Icons when asked : Choose Font Awesome icon packages you would like to use. What should I do ?
None of the Angular courses around can deliver so much value in so short tutorial. Thanks for continuous sharing valuable content. any thing i need, this channel is my first choice to start looking,.
This course is great, this is the best thing that I can imagine, thank you very much and thank GOD.
Really cool course! Captures everything and in a short time. Definition of crash course!
So if you are having trouble with the input fields, try to initialize them like this @Input() text : string | undefined
Thank you for your patience in teaching this course, Angular does have a steep learn curve but in my humble opinion it is worth the effort.
What theme are you using for VS Code? The text looks really clean in these colors. Great video by the way!
github dark
Really good tutorial, I just started to learn Angular and I think this tutorial was very clearly explained and a good start point. Obviously can't just learn Angular in two hours but I believe he did great job in this tutorial.
need more projects
Thank you so much for this video! I really appreciate your efforts in educating us!
Great video for getting the kick-start.
I would suggest having a few pages open up like app.component.html , app.component.ts , button.component.ts and button.component.html, or write it down on a piece of paper.
Then use the pen to draw the flow from one page to another, to get a clear understanding of what's happening.
Once you draw it, it gives a clear idea of the road map of whole video since it's such an iterative process.
:)
love it, i was wating for new angular course of you, keep going excelent course, btw what theme are you using? XD
Github theme.
I love this tutorial because it is swift but still clear. Exactly what I'm looking for as a backend developer that doesn't need much background on the underlying concepts.
can you tell me whhat is the theme ? it looks sooo goood!!!?!?
Github theme.
Hi Brad, I have been following your courses since past 5 years.
Amazing work here, really helped me brush all the key angular concepts.
Would love to see a short video on ngrx with angular.