Complete Angular Developer in 2025 Zero to Mastery
52h 28m 39s
English
Paid
September 28, 2024
Learn Angular from a senior industry professional. This is the only Angular course you need to learn Angular, build enterprise-level applications from scratch & get hired as an Angular Developer in 2022. Go from Zero To Angular Mastery.
More
- Build enterprise-level applications using Angular 13 and TypeScript and deploy them to production
- Use WebAssembly and Rust in your applications to improve performance and combine with the power of Angular
- Use RxJS and Streams in your applications
- Set up authentication and user accounts
- Learn to build reactive, performant, large-scale applications like a Senior Developer
- Master Production and Deployment of a professional Angular app
- Master the latest ecosystem of a Angular Developer from scratch
- Learn to lead Angular projects by making good architecture decisions and helping others on your team
- Learn the latest features in Angular: Routing, Directives, Pipes, Services, Ahead of time Compilation + much more
- Master Angular Design Patterns
- Use Firebase to build full-stack applications
- Learn to deal with Memory Leaks in your projects to improve performance
- Learn to use TailwindCSS in an Angular application
- Become a top 10% Angular Developer
Watch Online Complete Angular Developer in 2025 Zero to Mastery
Join premium to watch
Go to premium
# | Title | Duration |
---|---|---|
1 | Complete Angular Developer: Zero to Mastery | 02:23 |
2 | What Are We Building? | 04:18 |
3 | Understanding Frameworks | 04:42 |
4 | The Angular CLI | 04:18 |
5 | Upgrading Angular | 02:16 |
6 | Creating a New Application | 03:34 |
7 | Starting the Server | 05:08 |
8 | Reviewing the Configuration Files | 08:11 |
9 | Main Entry File | 01:28 |
10 | AOT Compilation | 05:05 |
11 | Bootstrapping Angular | 05:28 |
12 | Understanding Components | 02:04 |
13 | Creating Components | 05:48 |
14 | External Templates and Styles | 06:10 |
15 | Everything Else | 01:55 |
16 | Introduction to TypeScript | 05:13 |
17 | Installing TypeScript | 03:48 |
18 | Type Annotations | 04:53 |
19 | Variables | 04:42 |
20 | Union Types | 03:18 |
21 | Arrays | 03:03 |
22 | Objects | 03:32 |
23 | Interfaces | 03:48 |
24 | Classes | 03:35 |
25 | Generics | 07:47 |
26 | Why Decorators | 04:44 |
27 | TypeScript Configuration | 02:51 |
28 | Writing Decorators | 08:10 |
29 | Signals | 10:12 |
30 | Property Binding | 04:14 |
31 | Event Binding | 07:04 |
32 | Type Assertions | 05:39 |
33 | Creating a Component | 04:46 |
34 | Custom Properties | 08:05 |
35 | Required Inputs | 02:31 |
36 | Emitting Events | 08:47 |
37 | Content Projection | 03:21 |
38 | Discovering Lifecycle Hooks | 07:08 |
39 | Exploring More Lifecycle Hooks | 10:44 |
40 | Scoped CSS | 04:26 |
41 | Understanding Pipes | 02:12 |
42 | Pipe Basics | 05:00 |
43 | Angular Dev Tools | 02:29 |
44 | Pipe Parameters | 07:03 |
45 | Dealing with Numbers | 08:07 |
46 | Debugging with Pipes | 02:28 |
47 | Understanding Directives | 01:32 |
48 | The ngClass Directive | 06:45 |
49 | The ngStyle Directive | 04:14 |
50 | If Block | 02:18 |
51 | For Block | 06:07 |
52 | Introduction to the Master Project! | 04:36 |
53 | What is Tailwind? | 05:38 |
54 | Installing Tailwind | 07:31 |
55 | Configuring Tailwind | 02:34 |
56 | Practicing with Tailwind | 06:32 |
57 | Loading Static Assets | 06:17 |
58 | What’s Next? | 03:35 |
59 | Navigation and Modal Components | 06:37 |
60 | Designing a Modal | 02:26 |
61 | Creating a Shared Component | 02:32 |
62 | Creating a Reusable Modal | 02:55 |
63 | Multi-slot Content Projection | 03:16 |
64 | Understanding Services | 03:38 |
65 | Creating a Service | 01:27 |
66 | Understanding Dependency Injection | 09:04 |
67 | Injecting Services | 03:22 |
68 | Signal Queries | 07:54 |
69 | Opening the Modal | 06:41 |
70 | Closing the Modal | 03:54 |
71 | Memory Leaks | 06:33 |
72 | Fixing the memory leak | 04:57 |
73 | Creating a Tabs Component | 06:04 |
74 | The contentChildren Query Signal | 04:51 |
75 | Looping through the Tabs | 03:41 |
76 | Setting an Active Tab | 05:41 |
77 | Toggling Tabs | 05:18 |
78 | Preventing the Default Behavior | 02:03 |
79 | Preparing the Forms | 06:01 |
80 | Registering a New Form | 04:56 |
81 | Adding Form Controls | 03:20 |
82 | Binding a Form | 03:10 |
83 | Form Validation | 07:24 |
84 | Understanding Errors | 04:37 |
85 | Handling Errors | 05:22 |
86 | Form Controller Status | 05:44 |
87 | Designing an Input Component | 03:47 |
88 | Binding Form Controls | 02:21 |
89 | Updating the Template | 04:58 |
90 | Validating Emails | 07:12 |
91 | Validating Numbers | 06:02 |
92 | Validating Passwords with Patterns | 06:19 |
93 | Input Masking | 05:50 |
94 | Applying Input Masking | 06:00 |
95 | Disabling Buttons | 02:51 |
96 | Handling Form Submission | 02:52 |
97 | Designing an Alert Component | 11:30 |
98 | Importing the FormsModule | 02:10 |
99 | Registering a new Form | 03:40 |
100 | Two-way Binding | 06:45 |
101 | Template Variables | 05:51 |
102 | Attribute Validation | 03:28 |
103 | Handling Error Messages | 03:46 |
104 | Preparing the Password Field | 04:16 |
105 | Handling Form Submission | 03:57 |
106 | Introduction to RxJS | 05:56 |
107 | Observables | 05:48 |
108 | Observers | 04:23 |
109 | Pushing Asynchronous Values | 03:41 |
110 | Unsubscribing from Observables | 03:36 |
111 | Declarative Programming with Operators | 05:49 |
112 | Timing Operators | 05:28 |
113 | DOM Event Operators | 02:17 |
114 | The of and from Operators | 05:58 |
115 | Understanding Pipeable Operators | 04:08 |
116 | The Map Operator | 04:10 |
117 | Marble Diagram | 02:46 |
118 | Filter Operator | 07:28 |
119 | Reduce Operator | 04:07 |
120 | Take Operator | 04:19 |
121 | Tap Operator | 03:29 |
122 | Understanding Flattening Operators | 07:40 |
123 | mergeMap Operator | 06:17 |
124 | switchMap Operator | 05:06 |
125 | concatMap Operator | 02:30 |
126 | exhaustMap Operator | 02:35 |
127 | Flattening Operators Recap | 02:23 |
128 | Setting Up Firebase | 07:12 |
129 | Reviewing the Rules | 06:19 |
130 | Installing AngularFire | 04:00 |
131 | Importing AngularFire | 06:45 |
132 | User Registration | 08:05 |
133 | Handling the Response | 08:44 |
134 | Buckets, Collections and Documents | 03:21 |
135 | Firestore Provider | 01:51 |
136 | Storing User Data | 06:18 |
137 | Refactoring to a Service | 06:35 |
138 | Interfaces vs. Classes | 06:21 |
139 | Connecting the User with their Data | 10:27 |
140 | Database Rules | 02:42 |
141 | Understanding Authentication | 04:17 |
142 | Authentication after Registration | 03:23 |
143 | The User Observable | 03:46 |
144 | The Async Pipe | 05:00 |
145 | Setting Up the Login | 10:42 |
146 | Destroying the Modal | 04:23 |
147 | The Delay Operator | 03:55 |
148 | Signing Out | 04:38 |
149 | Sidebar JSON Web Tokens | 09:33 |
150 | Validating Passwords | 06:34 |
151 | Creating a Validator Class | 03:35 |
152 | Factory Functions | 06:12 |
153 | Handling Errors | 06:04 |
154 | Creating an Asynchronous Validator | 05:06 |
155 | Validating Unique Emails | 05:22 |
156 | Finalizing the Validator | 07:59 |
157 | Understanding Routing | 05:30 |
158 | Configuring the Router | 03:07 |
159 | Registering Routes | 07:16 |
160 | Exercise Registering a Route | 03:41 |
161 | Adding Navigation Links | 03:46 |
162 | Active Links | 07:08 |
163 | Creating the Manage Route | 02:47 |
164 | Forcing Redirection | 04:44 |
165 | A Quick Refactor | 04:11 |
166 | Adding Route Data | 05:50 |
167 | Filtering Router Events | 04:38 |
168 | Retrieving Data Outside of the Outlet | 06:51 |
169 | Exercise Registering a Route with Data | 05:00 |
170 | Route Parameters | 07:16 |
171 | Subscribing to Route Parameters | 04:57 |
172 | Query Parameters | 10:12 |
173 | Learning More About Query Parameters | 08:36 |
174 | Selecting an Option | 01:49 |
175 | Wildcard Routes | 03:32 |
176 | Updating Routes | 03:50 |
177 | Route Guards | 05:48 |
178 | Understanding File Uploads | 03:28 |
179 | Blocking Events with Directives | 08:36 |
180 | Handling Drag and Drop Events | 07:52 |
181 | Handling Files | 08:13 |
182 | Multi-Step Form | 03:59 |
183 | The Upload Form | 09:28 |
184 | Uploading Files with Firebase | 09:19 |
185 | Firebase Rules and Validation | 07:38 |
186 | Adding an Alert Component | 05:31 |
187 | Upload Progress Observable | 03:55 |
188 | Handling Errors and Successful Uploads | 07:33 |
189 | Storing the File Data | 06:06 |
190 | Adding the File Data to the Database | 07:20 |
191 | Firebase References and Snapshots | 02:25 |
192 | Disabling Forms | 02:49 |
193 | Canceling Uploads | 05:39 |
194 | Redirection after Upload | 05:31 |
195 | Storing a Timestamp | 04:27 |
196 | Querying the Database | 07:32 |
197 | Storing the List of Clips | 06:40 |
198 | Displaying the List of Clips | 02:34 |
199 | Preparing the Form | 06:39 |
200 | Passing on the Clip Data | 03:29 |
201 | Binding the Edit Form | 05:53 |
202 | Updating Clips | 11:31 |
203 | Updating the List of Clips | 08:53 |
204 | Deleting a Clip from the Storage and Database | 11:33 |
205 | Sorting Clips with Computed Signals | 05:08 |
206 | What is WebAssembly? | 08:54 |
207 | Getting Started with Rust | 06:21 |
208 | Exploring the Starter Project | 06:47 |
209 | Variables | 05:17 |
210 | Data Types | 06:48 |
211 | Debugging with Macros | 06:55 |
212 | Control Flow | 04:41 |
213 | Match Expressions | 07:51 |
214 | Arrays | 02:51 |
215 | Vectors | 05:21 |
216 | Structures | 04:09 |
217 | Ownership | 06:49 |
218 | Results | 08:21 |
219 | Preparing the Project | 03:40 |
220 | Installing Webpack | 03:41 |
221 | Configuring Webpack | 10:21 |
222 | Reading Files | 08:11 |
223 | Compiling Rust with Webpack | 04:47 |
224 | Importing Web Assembly | 05:48 |
225 | Logging Files | 09:22 |
226 | Base64 Decoding | 03:49 |
227 | Loading an Image from Memory | 03:00 |
228 | Grayscaling an Image | 02:54 |
229 | Buffering an Image | 05:19 |
230 | Encoding an Image | 05:11 |
231 | App Deployment | 04:07 |
232 | Understanding FFmpeg | 02:48 |
233 | Installing FFmpeg | 05:07 |
234 | Custom Asset Paths | 05:19 |
235 | Adding support for SharedArrayBuffer | 06:48 |
236 | Loading FFmpeg with a Service | 04:08 |
237 | Initializing FFMPeg | 06:06 |
238 | Saving Files in Memory | 06:29 |
239 | Generating a Screenshot | 11:05 |
240 | Generating Multiple Screenshots | 05:14 |
241 | Creating Screenshot URLs | 05:49 |
242 | Rendering Screenshots | 03:10 |
243 | Adding Feedback | 03:32 |
244 | Selecting a Screenshot | 04:20 |
245 | Updating the Firebase Storage Rules | 02:04 |
246 | Uploading a Blob | 07:11 |
247 | Recalculating the Upload Progress | 05:04 |
248 | The forkJoin Operator | 05:16 |
249 | Deleting Screenshots | 04:28 |
250 | Introduction | 01:45 |
251 | Creating a List Component | 02:01 |
252 | Handling Scroll Events | 08:27 |
253 | Querying for Clips | 12:44 |
254 | Rendering Clips on the Home page | 05:21 |
255 | Understanding Cross Origin Issues | 03:45 |
256 | Fixing Cross Origin Issues | 08:11 |
257 | Fixing the Timestamp | 05:09 |
258 | Rendering Clips on the Clip Page | 03:47 |
259 | Installing Videojs | 01:38 |
260 | Selecting the Video Player | 03:22 |
261 | Initializing the Video Player | 01:43 |
262 | Clip Styles | 02:11 |
263 | Resolving Data with a Guard | 08:35 |
264 | Dynamically Rendering the Video | 06:42 |
265 | Fixing the Manage Page | 01:04 |
266 | Copying Links to the Clipboard | 05:27 |
267 | Production Budgets | 03:29 |
268 | Modifying Firebase Rules | 03:46 |
269 | Deploying an App with Vercel | 10:47 |
270 | Introduction to Testing | 11:27 |
271 | Understanding Karma and Jasmine | 03:12 |
272 | Preparing Our App for Testing | 03:12 |
273 | Writing a Sanity Test | 06:05 |
274 | Angular’s Test Bed Utility | 05:34 |
275 | Testing a Component’s Instance | 06:29 |
276 | Querying the Component’s Template | 06:41 |
277 | Inverting Matchers | 03:17 |
278 | Testing Nested Components | 05:11 |
279 | Testing Content Projection | 06:34 |
280 | Custom Matcher Error Messages | 02:33 |
281 | Mocking Services | 06:31 |
282 | Overriding a Dependency | 02:23 |
283 | Providing the Router in Tests | 01:55 |
284 | Exercise Testing the Logout Link | 03:00 |
285 | Simulating DOM Events | 04:03 |
286 | Installing Cypress | 06:46 |
287 | Exploring Cypress | 06:05 |
288 | Writing an E2E Sanity Test | 06:09 |
289 | Testing the Video Player | 08:54 |
290 | Thank You! | 01:18 |
291 | Understanding Frameworks | 04:41 |
292 | The Angular CLI | 04:09 |
293 | Latest Version Of Angular | 02:22 |
294 | Creating a New Application | 03:36 |
295 | Starting the Server | 05:09 |
296 | Reviewing the Configuration Files | 07:44 |
297 | Main Entry File | 01:26 |
298 | AOT Compilation | 05:02 |
299 | Loading a Platform | 03:00 |
300 | Bootstrapping Angular | 02:48 |
301 | Enabling Production Mode | 04:29 |
302 | Understanding Modules | 04:01 |
303 | Creating Modules | 06:06 |
304 | Understanding Components | 01:59 |
305 | Creating Components | 06:01 |
306 | External Templates and Styles | 06:00 |
307 | Everything Else | 03:45 |
308 | Introduction to TypeScript | 05:09 |
309 | Installing TypeScript | 03:46 |
310 | Type Annotations | 04:51 |
311 | Variables | 04:40 |
312 | Union Types | 03:15 |
313 | Arrays | 03:01 |
314 | Objects | 03:31 |
315 | Interfaces | 03:46 |
316 | Classes | 03:32 |
317 | Generics | 07:42 |
318 | Why Decorators? | 04:39 |
319 | TypeScript Configuration | 01:57 |
320 | Writing Decorators | 07:04 |
321 | Interpolation | 07:46 |
322 | Property Binding | 03:50 |
323 | Event Binding | 06:18 |
324 | Type Assertions | 05:38 |
325 | Creating a Component | 05:32 |
326 | Custom Properties | 06:44 |
327 | Input Aliases | 02:45 |
328 | Emitting Events | 09:11 |
329 | Content Projection | 03:18 |
330 | Discovering Lifecycle Hooks | 06:08 |
331 | Exploring More Lifecycle Hooks | 10:33 |
332 | Scoped CSS | 04:24 |
333 | Understanding Pipes | 02:07 |
334 | Pipe Basics | 05:43 |
335 | Angular Dev Tools | 02:40 |
336 | Pipe Parameters | 06:16 |
337 | Dealing with Numbers | 07:14 |
338 | Debugging with Pipes | 01:51 |
339 | Understanding Directives | 02:00 |
340 | The ngClass Directive | 05:10 |
341 | The ngStyle Directive | 04:12 |
342 | Understanding ng-template | 02:12 |
343 | The ngIf Directive | 03:51 |
344 | The ngFor directive | 05:44 |
345 | Introduction to Master Project | 06:03 |
346 | What is Tailwind? | 05:37 |
347 | Installing Tailwind | 07:16 |
348 | Configuring Tailwind | 02:31 |
349 | Practicing with Tailwind | 05:26 |
350 | Loading Static Assets | 06:17 |
351 | What’s Next? | 03:31 |
352 | Creating a User Module | 04:36 |
353 | Navigation and Modal Components | 05:34 |
354 | Exporting Components | 03:25 |
355 | Designing a Modal | 02:24 |
356 | Creating a Shared Module | 04:10 |
357 | Creating a Reusable Modal | 02:49 |
358 | Multi-slot Content Projection | 03:13 |
359 | Understanding Services | 03:32 |
360 | Creating a Service | 01:42 |
361 | Understanding Dependency Injection | 05:35 |
362 | Injecting Services | 05:12 |
363 | Opening the Modal | 05:52 |
364 | Closing the Modal | 03:10 |
365 | Understanding Singletons | 03:47 |
366 | Creating an ID System | 05:46 |
367 | Refactoring the Service | 05:06 |
368 | Updating the Components | 04:47 |
369 | Memory Leaks | 06:03 |
370 | Fixing the Memory Leak | 04:47 |
371 | CSS Issues | 05:50 |
372 | Creating a Tabs Component | 06:05 |
373 | The ContentChildren Decorator | 05:41 |
374 | The QueryList Object | 03:23 |
375 | Looping through the Tabs | 03:21 |
376 | Setting an Active Tab | 07:08 |
377 | Toggling Tabs | 04:18 |
378 | Preventing the Default Behavior | 02:00 |
379 | Preparing the Forms | 05:44 |
380 | Registering a new Form | 04:16 |
381 | Adding Form Controls | 03:16 |
382 | Binding a Form | 03:06 |
383 | Form Validation | 07:12 |
384 | Understanding Errors | 04:17 |
385 | Handling Errors | 05:17 |
386 | Form Controller Status | 05:50 |
387 | Designing an Input Component | 03:51 |
388 | Binding Form Controls | 08:24 |
389 | Updating the Template | 06:28 |
390 | Validating Emails | 06:50 |
391 | Validating Numbers | 05:58 |
392 | Validating Passwords with Patterns | 06:01 |
393 | Input Masking | 05:55 |
394 | Applying Input Masking | 06:06 |
395 | Disabling Buttons | 05:12 |
396 | Handling Form Submission | 02:50 |
397 | Designing an Alert Component | 10:14 |
398 | Importing the FormsModule | 02:23 |
399 | Registering a new Form | 04:05 |
400 | Two-way Binding | 06:39 |
401 | Template Variables | 05:47 |
402 | Attribute Validation | 03:25 |
403 | Handling Error Messages | 03:41 |
404 | Preparing the Password Field | 04:14 |
405 | Handling Form Submission | 04:50 |
406 | Exercise: Imposter Syndrome | 02:56 |
407 | Introduction to RxJS | 06:03 |
408 | Observables | 05:22 |
409 | Observers | 04:21 |
410 | Pushing Asynchronous Values | 03:40 |
411 | Unsubscribing from Observables | 03:34 |
412 | Declarative Programming with Operators | 05:48 |
413 | Timing Operators | 05:26 |
414 | DOM Event Operators | 02:16 |
415 | The of and from operators | 05:54 |
416 | Understanding Pipeable Operators | 04:03 |
417 | The Map Operator | 04:05 |
418 | Marble Diagram | 02:44 |
419 | Filter Operator | 07:27 |
420 | Reduce Operator | 04:04 |
421 | Take Operator | 04:17 |
422 | Tap Operator | 03:27 |
423 | Understanding Flattening Operators | 07:02 |
424 | mergeMap Operator | 06:15 |
425 | switchMap Operator | 04:42 |
426 | concatMap Operator | 02:29 |
427 | exhaustMap Operator | 02:32 |
428 | Flattening Operators Recap | 02:22 |
429 | Setting up Firebase | 07:09 |
430 | Reviewing the Rules | 06:15 |
431 | Installing AngularFire | 03:58 |
432 | Importing AngularFire | 06:59 |
433 | User Registration | 07:55 |
434 | Handling the Response | 07:55 |
435 | Buckets, Collections, and Documents | 03:18 |
436 | Storing User Data | 06:33 |
437 | Refactoring to a Service | 06:19 |
438 | Interfaces vs. Classes | 07:51 |
439 | Collection Types | 06:21 |
440 | Connecting the User with their Data | 10:09 |
441 | Database Rules | 02:40 |
442 | Understanding Authentication | 04:14 |
443 | Authentication after Registration | 03:20 |
444 | The User Observable | 05:53 |
445 | The Async Pipe | 07:38 |
446 | Initializing Firebase First | 09:33 |
447 | Setting up the Login | 09:26 |
448 | Destroying the Modal | 06:08 |
449 | The Delay Operator | 04:06 |
450 | Signing Out | 04:27 |
451 | Sidebar: JSON Web Tokens | 09:32 |
452 | Creating a Validator Class | 03:57 |
453 | Static Methods | 03:19 |
454 | Validating Passwords | 06:13 |
455 | Factory Functions | 06:16 |
456 | Handling Errors | 06:04 |
457 | Creating an Asynchronous Validator | 05:27 |
458 | Validating Unique Emails | 05:25 |
459 | Finalizing the Validator | 07:28 |
460 | Understanding Routing | 05:29 |
461 | Configuring the Router | 05:50 |
462 | Registering Routes | 07:01 |
463 | Exercise: Registering a Route | 03:40 |
464 | Adding Navigation Links | 03:13 |
465 | Active Links | 06:46 |
466 | Generating a Routing Module | 05:57 |
467 | Forcing Redirection | 04:41 |
468 | A Quick Refactor | 03:29 |
469 | Adding Route Data | 05:25 |
470 | Filtering Router Events | 04:35 |
471 | Retrieving Data Outside of the Outlet | 07:43 |
472 | Exercise: Registering a Route with Data | 04:37 |
473 | Route Parameters | 06:53 |
474 | Subscribing to Route Parameters | 04:36 |
475 | Query Parameters | 09:25 |
476 | Learning More About Query Parameters | 08:43 |
477 | Selecting an Option | 01:48 |
478 | Wildcard Routes | 05:07 |
479 | Updating Routes | 03:50 |
480 | Route Guards | 05:52 |
481 | Understanding File Uploads | 03:25 |
482 | Blocking Events with Directives | 09:02 |
483 | Handling Drag and Drop Events | 07:10 |
484 | Handling Files | 07:54 |
485 | Multi Step Form | 04:30 |
486 | The Upload Form | 09:13 |
487 | Uploading Files with Firebase | 06:55 |
488 | Firebase Rules and Validation | 07:24 |
489 | Adding an Alert Component | 05:16 |
490 | Upload Progress Observable | 03:47 |
491 | Handling Errors and Successful Uploads | 10:23 |
492 | Storing the File Data | 08:29 |
493 | Adding the File Data to the Database | 08:13 |
494 | Firebase References and Snapshots | 02:23 |
495 | Disabling Forms | 02:48 |
496 | Fallback Upload | 06:18 |
497 | Canceling Uploads | 05:47 |
498 | Redirection after Upload | 06:25 |
499 | Storing a Timestamp | 04:39 |
500 | Querying the Database | 08:54 |
501 | Storing the List of Clips | 07:21 |
502 | Displaying the List of Clips | 02:13 |
503 | Preparing the Form | 07:06 |
504 | Passing on the Clip Data | 03:28 |
505 | Binding the Edit Form | 06:33 |
506 | Updating Clips | 09:18 |
507 | Updating the List of Clips | 07:00 |
508 | Deleting a Clip from the Storage/Database | 10:02 |
509 | Sorting Clips with Behavior Subjects | 11:06 |
510 | Composite Indexes | 04:32 |
511 | What is WebAssembly? | 08:52 |
512 | Getting Started with Rust | 06:18 |
513 | Exploring the Starter Project | 06:47 |
514 | Variables | 05:15 |
515 | Data Types | 06:47 |
516 | Debugging with Macros | 06:52 |
517 | Control Flow | 04:39 |
518 | Match Expressions | 07:49 |
519 | Arrays | 02:50 |
520 | Vectors | 05:19 |
521 | Structures | 04:07 |
522 | Ownership | 06:49 |
523 | Results | 08:20 |
524 | Preparing the Project | 03:41 |
525 | Installing Webpack | 03:40 |
526 | Configuring Webpack | 10:06 |
527 | Reading Files | 08:10 |
528 | Compiling Rust with Webpack | 04:48 |
529 | Importing Web Assembly | 05:43 |
530 | Logging Files | 09:15 |
531 | Base64 Decoding | 03:07 |
532 | Loading an Image from Memory | 03:22 |
533 | Grayscaling an Image | 02:58 |
534 | Buffering an Image | 04:20 |
535 | Encoding an Image | 05:40 |
536 | App Deployment | 04:06 |
537 | Understanding FFmpeg | 02:45 |
538 | Installing FFmpeg | 05:01 |
539 | Custom Asset Paths | 05:26 |
540 | Adding support for SharedArrayBuffer | 06:46 |
541 | Loading FFmpeg with a Service | 04:12 |
542 | Initializing FFMPeg | 06:47 |
543 | Saving Files in Memory | 05:46 |
544 | Generating a Screenshot | 11:01 |
545 | Generating Multiple Screenshots | 05:10 |
546 | Creating Screenshot URLs | 05:47 |
547 | Bypassing Sanitization with Pipes | 08:25 |
548 | Adding Feedback | 03:39 |
549 | Selecting a Screenshot | 04:16 |
550 | Updating the Firebase Storage Rules | 02:03 |
551 | Uploading a Blob | 06:32 |
552 | Recalculating the Upload Progress | 04:48 |
553 | The forkJoin Operator | 07:23 |
554 | Deleting Screenshots | 03:46 |
555 | Section Overview | 01:44 |
556 | Creating a List Component | 01:48 |
557 | Handling Scroll Events | 07:41 |
558 | Querying for Clips | 10:39 |
559 | Rendering Clips on the Home page | 04:51 |
560 | Understanding Cross Origin Issues | 03:44 |
561 | Fixing Cross Origin Issues | 08:10 |
562 | Fixing the Timestamp | 08:16 |
563 | Rendering Clips on the Clip Page | 03:31 |
564 | Installing Videojs | 01:38 |
565 | Selecting elements with the ViewChild Decorator | 05:59 |
566 | Initializing the Video Player | 02:03 |
567 | Styles without View Encapsulation | 05:17 |
568 | Tailwind’s Aspect Ratio Classes | 01:27 |
569 | Resolving Data with a Guard | 08:10 |
570 | Dynamically Rendering the Video | 07:03 |
571 | Fixing the Manage Page | 01:04 |
572 | Copying Links to the Clipboard | 06:05 |
573 | Lazy Loading Modules | 06:32 |
574 | Production Budgets | 03:27 |
575 | Modifying Firebase Rules | 03:43 |
576 | Deploying an App with Vercel | 10:45 |
577 | Introduction to Testing | 11:21 |
578 | Understanding Karma and Jasmine | 08:14 |
579 | Preparing our App for Testing | 02:57 |
580 | Writing a Sanity Test | 06:02 |
581 | Angular’s Test Bed Utility | 05:56 |
582 | Testing a Component’s Instance | 06:28 |
583 | Querying the Component’s Template | 06:40 |
584 | Inverting Matchers | 03:11 |
585 | Testing Nested Components | 04:42 |
586 | Testing Content Projection | 06:25 |
587 | Custom Matcher Error Messages | 02:31 |
588 | Mocking Services | 06:33 |
589 | Overriding a Dependency | 02:45 |
590 | Importing the Router Testing Module | 02:00 |
591 | Exercise: Testing the Logout Link | 03:06 |
592 | Simulating DOM Events | 03:59 |
593 | Installing Cypress | 06:10 |
594 | Exploring Cypress | 06:05 |
595 | Writing an E2E Sanity Test | 06:05 |
596 | Testing the Video Player | 08:53 |
Read Book Complete Angular Developer in 2025 Zero to Mastery
# | Title |
---|---|
1 | Angular Course Resources |
Similar courses to Complete Angular Developer in 2025 Zero to Mastery
Angular and Golang: A Rapid Guide - Advanced
Duration 9 hours 40 minutes 39 seconds
Course
Angular 2 Fundamentals
Duration 5 hours 6 minutes 53 seconds
Course
Angular NgRx: Getting Started
Duration 4 hours 5 minutes 32 seconds
Course
Build an app with ASPNET Core and Angular from scratch
Duration 29 hours 51 minutes 36 seconds
Course
Angular 9 Firebase Project Course
Duration 2 hours 46 minutes 56 seconds
Course
Create a Personal Portfolio using Angular 2 & Behance
Duration 2 hours 8 minutes 10 seconds
Course
Angular Basics (v15)
Duration 8 hours 58 minutes 31 seconds
Course
Desktop apps with Angular, Firestore and Electron
Duration 11 hours 28 minutes 39 seconds
Course