Angular Crash Course
Vložit
- čas přidán 2. 06. 2024
- Learn the fundamentals of Angular in this project-based crash course
Video Sponsor:
www.hostinger.com/traversymedia
- Use the code TRAVERSYMEDIA for 10% off!
Code:
github.com/bradtraversy/angul...
Latest Udemy Courses:
traversymedia.com
💖 Support The Channel!
/ traversymedia
Timestamps:
0:00 - Hostinger Sponsor
0:35 - Intro & Slides
7:41 - Angular CLI & Setup
10:39 - Files & Folders
14:49 - Component structure
16:42 - Properties & Interpolation
18:40 - Global Styles
19:20 - Header Component
23:15 - Button Component
24:36 - Component Input Data
22:19 - Creating an event & event emitter output
30:51 - Mock Tasks & Task Interface
34:10 - Tasks Component
36:03 - Looping with ngFor
37:16 - Task Item Component
40:13 - Angular Font Awesome Setup
44:39 - Create a Task Service
49:06 - Creating and Subscribe to Observable
50:04 - JSON-Server Setup
57:29 - Angular HTTP Client
59:48 - Fetching Tasks
1:02:59 - Deleting Tasks
1:12:54 - Toggle Reminder
1:20:29 - Add Task Component
1:26:26 - Forms Module & ngModel
1:29:00 - Submit & Create Task
1:37:02 - Toggle Button & UI Service
1:51:38 - Angular Router
1:57:34 - Limit Component to Route - Věda a technologie
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'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!!!
thank youuu
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
Finally!.. I've been waiting for Angular Crash Course for a long time👍
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
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!
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!
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 !!!
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!!
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..
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.
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!
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 was waiting for this course. And hope you do more Angular projects.
Thank you Brad.
Simplilearn is offering 🔥Free Angular Course: www.simplilearn.com/learn-angular-basics-free-course-skillup?SLP02675&
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 🙏🏼
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 .
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 {
}
}
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. 👏
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 ❤️
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.
25:30 @Input() text: string = "";
@Input() color: string = "";
Thanks, upvoted
Thanks a lot! this is so helpful :)
Was looking for this too, thanks
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!
Brad, we love your work and amazing tutorials. Big fan!!
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.
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.
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.
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
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.
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!
Best programmer in the world, I really appreciate everything you do, truly learning a LOT from you
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.
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
You are so clutch with the timing of this video. Thank you, Brad!
Never hurts to get a refresher on an Angular crash course. 👍
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.
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.
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)"
really good stuff. I haven't worked with angular in two years and this is perfect for refreshing
Thanks Brad! I’ve been waiting on this course from you.
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.
Yeah i think angular is best with typescript. Angular has a structure like a building. Its on point Brad!
Magnificent, love it so much! Exactly what I was looking for. You're awesome!
Thanks. I always find myself back on your channel anytime I need to learn / refresh my memory on a framework. Great videos.
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.
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 possible the best Angular crash course I have ever watched. You are an amazing teacher, thanks.
I remember buying his angular course 3 years ago on udemy. Very helpful.
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.
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.
The quality and robustness of your tutorial videos is always appreciated.
Brad your work is really amazing. You explain and teach things I really want to learn. When it comes to selecting a JS framework, I found that Angular is the option to go with but I didn't go for it because I thought it's based on Typescript; but now at the Intro of this course you stated that using Typescript is optional. It made me feel good, get up and invest my time in working with Angular.
FINALLY. Been waiting for this one 🙏
yes, it took a long time
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.
i was just watching Angular 2019 from traversy, just got the updated one . Thank you so much
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,.
FINALLLYYYYYYYYYYY SOME FRESH ANGULAR IN CZcams !!!!!
Waoooooh Greetings from Tanzania, Have been waiting for this one.
React na Angular Developer kutoka Tanzania visiwani (Zanzibar). Nimefurahi kukutana na ww hapa.
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!!!
Really excellent tutorial. I learned so much from completing it! Can't wait to start the next one.
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.
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.
I'm starting a new full stack developer position, and i haven't done agnular in a while. I think this is PERFECT for those who need to just dip their toes into this. I knew what was going on due to some prior experience in angular a few years ago. However it's definitely not my strong point as i'm more of a backend developer. THanks again for this. I think the auto generate stuff is quite neat. I remember having to go update the files manually and wondering why my stuff doesn't show up
Excellent introduction to Angular; very helpful; concise but still complete. Thanks a million.
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.
just got hired by state farm, but the team uses Angular instead of React, your videos are definitely helpful, really appreciate it!
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.
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!
czcams.com/video/ql77Hk1RTGA/video.html
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. 🙏
Best explanation ever. Already payed for 3 courses on udemy looking for nice explanation and didnt understood anything. Thank you! You are the best
Brad, you are always on time! That's exactly what I was looking for
Great Learning, THANK YOU.
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
It helped me a lot because I was familiar with AngularJS. Amazing, on-point tutorial.
Ultimate this 2 hours of practice gets me the solution of my multiple questions. Super Bro. God Bless You
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?
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 explain so much better Brad, we need a full course and more projects
Really cool course! Captures everything and in a short time. Definition of crash course!
Thank you so much for this video! I really appreciate your efforts in educating us!
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
thanks
The tip about just throwing the `components` into `ng generate` - Brilliant! 🧠 I tried to move spit around after the fact and set up absolute imports, etc. This way, we get the directory structure we want (a la closer to React) and Angular/VS Code does all of the `import`s with TS. 👏🏾 🤓
You are a blessing to me, Awesome stuff. I am now up and running with angular
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 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 ?
@@aishaghalia1259 Hi! I used the latest version at that time which was 15.0.1
This is pretty much exactly what I was looking for as a professional web engineer. Basic overview of modern ng. Surprisingly easy coming from React.
I like following along with the exact version when I watch tutorials. This reducing the unrecognized errors you encounter from newer version. If you want to do the same Traversy is using angular 11.2.12 with Typescript 4.1.15. I used NVM to change my version of node to 10.13.0 (and then "nvm install-latest-npm" to get to a usable npm version)
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.
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.
Thanks for amazing crash course video. I kind of revisit when ever I do have doubt on your videos to get some idea how it needs to implement. Kind of rewind concepts when it is urgent. Thank you so much Brad for amazing content ❤
Thanks Traversy i had my interview today they had thing like knowledge of angular will be plus point i learned from you video and little bit of self study just landed me the job
What theme are you using for VS Code? The text looks really clean in these colors. Great video by the way!
github dark
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
@@Blindbuymovieguy 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?
this was amazing, i was waiting for this since a long time, thanks
Hello Brad! Love your channel, it helped me with finding my current job. I'd like to see more Angular project, you explain so well and I know that with you I can improve myself more and more. Keep it up ;)
This course is great, this is the best thing that I can imagine, thank you very much and thank GOD.
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 ?
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.
Was waiting for this video for so long, thanks!
can you tell me whhat is the theme ? it looks sooo goood!!!?!?
Github theme.
So if you are having trouble with the input fields, try to initialize them like this @Input() text : string | undefined