Урок #1 001-complete-angular-developer-zero-to-mastery-4431k
2:23
Урок #2 002-what-are-we-building_-1276k
4:18
Урок #3 003-understanding-frameworks-182k
4:42
Урок #4 004-the-angular-cli-290k
4:18
Урок #5 005-upgrading-angular-461k
2:16
Урок #6 006-creating-a-new-application-489k
3:34
Урок #7 007-starting-the-server-236k
5:08
Урок #8 008-reviewing-the-configuration-files-319k
8:11
Урок #9 009-main-entry-file-280k
1:27
Урок #10 010-aot-compilation-198k
5:04
Урок #11 011-bootstrapping-angular-301k
5:28
Урок #12 012-understanding-components-282k
2:04
Урок #13 013-creating-components-241k
5:48
Урок #14 014-external-templates-and-styles-231k
6:09
Урок #15 015-everything-else-252k
1:55
Урок #16 016-introduction-to-typescript-209k
5:12
Урок #17 017-installing-typescript-265k
3:48
Урок #18 018-type-annotations-265k
4:53
Урок #19 019-variables-219k
4:42
Урок #20 020-union-types-188k
3:17
Урок #21 021-arrays-201k
3:02
Урок #22 022-objects-209k
3:31
Урок #23 023-interfaces-217k
3:47
Урок #24 024-classes-210k
3:34
Урок #25 025-generics-229k
7:47
Урок #26 026-why-decorators-268k
4:44
Урок #27 027-typescript-configuration-309k
2:51
Урок #28 028-writing-decorators-225k
8:10
Урок #29 029-signals-222k
10:12
Урок #30 030-property-binding-263k
4:13
Урок #31 031-event-binding-255k
7:03
Урок #32 032-type-assertions-334k
5:39
Урок #33 033-creating-a-component-313k
4:45
Урок #34 034-custom-properties-284k
8:05
Урок #35 035-required-inputs-293k
2:30
Урок #36 036-emitting-events-288k
8:47
Урок #37 037-content-projection-301k
3:20
Урок #38 038-discovering-lifecycle-hooks-357k
7:07
Урок #39 039-exploring-more-lifecycle-hooks-371k
10:44
Урок #40 040-scoped-css-313k
4:26
Урок #41 041-understanding-pipes-189k
2:12
Урок #42 042-pipe-basics-327k
5:00
Урок #43 043-angular-dev-tools-313k
2:29
Урок #44 044-pipe-parameters-394k
7:03
Урок #45 045-dealing-with-numbers-347k
8:06
Урок #46 046-debugging-with-pipes-367k
2:27
Урок #47 047-understanding-directives-332k
1:31
Урок #48 048-the-ngclass-directive-326k
6:44
Урок #49 049-the-ngstyle-directive-361k
4:13
Урок #50 050-if-block-400k
2:17
Урок #51 051-for-block-391k
6:06
Урок #52 052-introduction-to-the-master-project-944k
4:36
Урок #53 053-what-is-tailwind_-257k
5:38
Урок #54 054-installing-tailwind-308k
7:31
Урок #55 055-configuring-tailwind-380k
2:34
Урок #56 056-practicing-with-tailwind-408k
6:32
Урок #57 057-practicing-with-tailwind-626k
6:17
Урок #58 058-whats-next_-176k
3:34
Урок #59 059-navigation-and-modal-components-441k
6:37
Урок #60 060-designing-a-modal-219k
2:26
Урок #61 061-creating-a-shared-component-307k
2:31
Урок #62 062-creating-a-reusable-modal-554k
2:54
Урок #63 063-multi-slot-content-projection-426k
3:15
Урок #64 064-understanding-services-183k
3:37
Урок #65 065-creating-a-service-356k
1:26
Урок #66 066-understanding-dependency-injection-289k
9:04
Урок #67 067-injecting-services-437k
3:22
Урок #68 068-signal-queries-334k
7:54
Урок #69 069-opening-the-modal-381k
6:40
Урок #70 070-closing-the-modal-613k
3:53
Урок #71 071-memory-leaks-405k
6:33
Урок #72 072-fixing-the-memory-leak-532k
4:56
Урок #73 073-creating-a-tabs-component-375k
6:04
Урок #74 074-the-contentchildren-query-signal-425k
4:50
Урок #75 075-looping-through-the-tabs-449k
3:40
Урок #76 076-setting-an-active-tab-405k
5:40
Урок #77 077-toggling-tabs-459k
5:17
Урок #78 078-preventing-the-default-behavior-1101k
2:02
Урок #79 079-preparing-the-forms-291k
6:00
Урок #80 080-registering-a-new-form-354k
4:56
Урок #81 081-adding-form-controls-442k
3:20
Урок #82 082-binding-a-form-527k
3:09
Урок #83 083-form-validation-475k
7:24
Урок #84 084-understanding-errors-670k
4:36
Урок #85 085-handling-errors-466k
5:21
Урок #86 086-form-controller-status-622k
5:43
Урок #87 087-designing-an-input-component-436k
3:46
Урок #88 088-binding-form-controls-428k
2:21
Урок #89 089-updating-the-template-484k
4:57
Урок #90 090-validating-emails-561k
7:12
Урок #91 091-validating-numbers-531k
6:02
Урок #92 092-validating-passwords-with-patterns-550k
6:18
Урок #93 093-input-masking-391k
5:49
Урок #94 094-applying-input-masking-593k
5:59
Урок #95 095-disabling-buttons-675k
2:51
Урок #96 096-handling-form-submission-483k
2:52
Урок #97 097-designing-an-alert-component-332k
11:29
Урок #98 098-importing-the-formsmodule-294k
2:10
Урок #99 099-registering-a-new-form-695k
3:40
Урок #100 100-two-way-binding-491k
6:44
Урок #101 101-template-variables-409k
5:50
Урок #102 102-attribute-validation-773k
3:28
Урок #103 103-handling-error-messages-529k
3:45
Урок #104 104-preparing-the-password-field-594k
4:15
Урок #105 105-handling-form-submission-711k
3:56
Урок #106 106-introduction-to-rxjs-267k
5:56
Урок #107 107-observables-287k
5:48
Урок #108 108-observers-436k
4:23
Урок #109 109-pushing-asynchronous-values-477k
3:41
Урок #110 110-unsubscribing-from-observables-454k
3:36
Урок #111 111-declarative-programming-with-operators-294k
5:48
Урок #112 112-timing-operators-344k
5:28
Урок #113 113-dom-event-operators-352k
2:17
Урок #114 114-the-of-and-from-operators-378k
5:58
Урок #115 115-understanding-pipeable-operators-210k
4:08
Урок #116 116-the-map-operator-397k
4:10
Урок #117 117-marble-diagram-219k
2:46
Урок #118 118-filter-operator-384k
7:28
Урок #119 119-reduce-operator-342k
4:06
Урок #120 120-take-operator-365k
4:19
Урок #121 121-tap-operator-349k
3:28
Урок #122 122-understanding-flattening-operators-387k
7:39
Урок #123 123-mergemap-operator-357k
6:17
Урок #124 124-switchmap-operator-320k
5:05
Урок #125 125-concatmap-operator-276k
2:30
Урок #126 126-exhaustmap-operator-286k
2:35
Урок #127 127-flattening-operators-recap-257k
2:23
Урок #128 128-setting-up-firebase-316k
7:11
Урок #129 129-reviewing-the-rules-343k
6:19
Урок #130 130-installing-angularfire-313k
4:00
Урок #131 131-importing-angularfire-441k
6:45
Урок #132 132-user-registration-459k
8:05
Урок #133 133-handling-the-response-586k
8:43
Урок #134 134-buckets-collections-and-documents-205k
3:20
Урок #135 135-firestore-provider-504k
1:50
Урок #136 136-storing-user-data-483k
6:17
Урок #137 137-refactoring-to-a-service-437k
6:35
Урок #138 138-interfaces-vs-classes-385k
6:21
Урок #139 139-connecting-the-user-with-their-data-403k
10:26
Урок #140 140-database-rules-383k
2:42
Урок #141 141-understanding-authentication-168k
4:16
Урок #142 142-authentication-after-registration-571k
3:23
Урок #143 143-the-user-observable-853k
3:46
Урок #144 144-the-async-pipe-643k
4:59
Урок #145 145-setting-up-the-login-498k
10:42
Урок #146 146-destroying-the-modal-1066k
4:23
Урок #147 414-dom-event-operators-531k
2:16
Урок #148 415-the-of-and-from-operators-503k
5:54
Урок #149 416-understanding-pipeable-operators-322k
4:02
Урок #150 417-the-map-operator-525k
4:05
Урок #151 418-marble-diagram-331k
2:44
Урок #152 419-filter-operator-524k
7:27
Урок #153 420-reduce-operator-509k
4:04
Урок #154 421-take-operator-480k
4:16
Урок #155 422-tap-operator-498k
3:27
Урок #156 423-understanding-flattening-operators-568k
7:01
Урок #157 424-mergemap-operator-562k
6:15
Урок #158 425-switchmap-operator-499k
4:42
Урок #159 426-concatmap-operator-488k
2:29
Урок #160 427-exhaustmap-operator-475k
2:32
Урок #161 428-flattening-operators-recap-393k
2:21
Урок #162 429-setting-up-firebase-445k
7:08
Урок #163 430-reviewing-the-rules-330k
6:15
Урок #164 431-installing-angularfire-405k
3:58
Урок #165 432-importing-angularfire-464k
6:59
Урок #166 433-user-registration-446k
7:55
Урок #167 434-handling-the-response-822k
7:54
Урок #168 435-buckets-collections-and-documents-307k
3:18
Урок #169 436-storing-user-data-652k
6:33
Урок #170 437-refactoring-to-a-service-630k
6:19
Урок #171 438-interfaces-vs-classes-394k
7:51
Урок #172 439-collection-types-586k
6:20
Урок #173 440-connecting-the-user-with-their-data-538k
10:08
Урок #174 441-database-rules-405k
2:39
Урок #175 442-understanding-authentication-246k
4:13
Урок #176 443-authentication-after-registration-698k
3:19
Урок #177 444-the-user-observable-979k
5:52
Урок #178 445-the-async-pipe-842k
7:37
Урок #179 446-initializing-firebase-first
9:33
Урок #180 447-setting-up-the-login-677k
9:25
Урок #181 448-destroying-the-modal-1119k
6:08
Урок #182 449-the-delay-operator-zero-to-mastery-academy
4:06
Урок #183 450-signing-out-716k
4:26
Урок #184 451-sidebar-json-web-tokens-494k
9:31
Урок #185 452-creating-a-validator-class-579k
3:56
Урок #186 453-static-methods-351k
3:19
Урок #187 454-validating-passwords-796k
6:13
Урок #188 455-factory-functions-679k
6:16
Урок #189 456-handling-errors-857k
6:03
Урок #190 457-creating-an-asynchronous-validator-511k
5:26
Урок #191 458-validating-unique-emails-641k
5:25
Урок #192 459-finalizing-the-validator-845k
7:27
Урок #193 460-understanding-routing-727k
5:29
Урок #194 461-configuring-the-router-zero-to-mastery-academy
5:49
Урок #195 462-registering-routes-zero-to-mastery-academy
7:00
Урок #196 463-exercise-registering-a-route-zero-to-mastery-academy-640x360-238k
3:40
Урок #197 464-adding-navigation-links-zero-to-mastery-academy
3:12
Урок #198 465-active-links-zero-to-mastery-academy
6:46
Урок #199 466-generating-a-routing-module-zero-to-mastery-academy
5:56
Урок #200 467-forcing-redirection-zero-to-mastery-academy
4:40
Урок #201 468-a-quick-refactor-zero-to-mastery-academy
3:28
Урок #202 469-adding-route-data-zero-to-mastery-academy
5:24
Урок #203 470-filtering-router-events-zero-to-mastery-academy
4:35
Урок #204 471-retrieving-data-outside-of-the-outlet-469k
7:43
Урок #205 472-exercise-registering-a-route-with-data-zero-to-mastery-academy
4:36
Урок #206 473-route-parameters-zero-to-mastery-academy
6:53
Урок #207 474-subscribing-to-route-parameters-zero-to-mastery-academy
4:36
Урок #208 475-query-parameters-416k
9:25
Урок #209 476-learning-more-about-query-parameters-zero-to-mastery-academy
8:42
Урок #210 477-selecting-an-option-zero-to-mastery-academy
1:48
Урок #211 478-wildcard-routes-zero-to-mastery-academy
5:06
Урок #212 479-updating-routes-zero-to-mastery-academy
3:49
Урок #213 480-route-guards-zero-to-mastery-academy
5:51
Урок #214 481-understanding-file-uploads-zero-to-mastery-academy
3:24
Урок #215 482-blocking-events-with-directives-zero-to-mastery-academy
9:02
Урок #216 483-handling-drag-and-drop-events-zero-to-mastery-academy
7:10
Урок #217 484-handling-files-zero-to-mastery-academy
7:54
Урок #218 485-multi-step-form-zero-to-mastery-academy
4:30
Урок #219 486-the-upload-form-zero-to-mastery-academy
9:13
Урок #220 147-the-delay-operator-1070k
3:55
Урок #221 148-signing-out-486k
4:38
Урок #222 149-sidebar-json-web-tokens-315k
9:33
Урок #223 150-validating-passwords-375k
6:33
Урок #224 151-creating-a-validator-class-420k
3:34
Урок #225 152-factory-functions-426k
6:12
Урок #226 153-handling-errors-721k
6:04
Урок #227 154-creating-an-asynchronous-validator-303k
5:05
Урок #228 155-validating-unique-emails-387k
5:22
Урок #229 156-finalizing-the-validator-723k
7:58
Урок #230 157-understanding-routing-425k
5:30
Урок #231 158-configuring-the-router-823k
3:06
Урок #232 159-registering-routes-336k
7:16
Урок #233 160-exercise-registering-a-route-345k
3:41
Урок #234 161-adding-navigation-links-1017k
3:46
Урок #235 162-active-links-543k
7:07
Урок #236 163-creating-the-manage-route-561k
2:47
Урок #237 164-forcing-redirection-465k
4:44
Урок #238 165-a-quick-refactor-521k
4:10
Урок #239 166-adding-route-data-374k
5:50
Урок #240 167-filtering-router-events-437k
4:37
Урок #241 168-retrieving-data-outside-of-the-outlet-452k
6:51
Урок #242 169-exercise-registering-a-route-with-data-513k
4:59
Урок #243 170-route-parameters-442k
7:16
Урок #244 171-subscribing-to-route-parameters-301k
4:56
Урок #245 172-query-parameters-316k
10:12
Урок #246 173-learning-more-about-query-parameters-335k
8:35
Урок #247 174-selecting-an-option-295k
1:49
Урок #248 175-wildcard-routes-516k
3:32
Урок #249 176-updating-routes-313k
3:50
Урок #250 177-route-guards-844k
5:47
Урок #251 178-understanding-file-uploads-220k
3:27
Урок #252 179-blocking-events-with-directives-274k
8:36
Урок #253 180-handling-drag-and-drop-events-349k
7:52
Урок #254 181-handling-files-338k
8:13
Урок #255 182-multi-step-form-320k
3:58
Урок #256 183-the-upload-form-392k
9:27
Урок #257 184-uploading-files-with-firebase-404k
9:18
Урок #258 185-firebase-rules-and-validation-357k
7:38
Урок #259 186-adding-an-alert-component-443k
5:30
Урок #260 187-upload-progress-observable-502k
3:54
Урок #261 188-handling-errors-and-successful-uploads-449k
7:33
Урок #262 189-storing-the-file-data-470k
6:05
Урок #263 190-adding-the-file-data-to-the-database-331k
7:20
Урок #264 191-firebase-references-and-snapshots-218k
2:25
Урок #265 192-disabling-forms-442k
2:48
Урок #266 193-canceling-uploads-470k
5:38
Урок #267 194-redirection-after-upload-368k
5:30
Урок #268 195-storing-a-timestamp-494k
4:26
Урок #269 196-querying-the-database-314k
7:31
Урок #270 197-storing-the-list-of-clips-386k
6:40
Урок #271 198-displaying-the-list-of-clips-431k
2:33
Урок #272 199-preparing-the-form-327k
6:38
Урок #273 200-passing-on-the-clip-data-458k
3:28
Урок #274 201-binding-the-edit-form-383k
5:52
Урок #275 202-updating-clips-381k
11:31
Урок #276 203-updating-the-list-of-clips-346k
8:52
Урок #277 204-deleting-a-clip-from-the-storage-and-database-396k
11:33
Урок #278 205-sorting-clips-with-computed-signals-407k
5:07
Урок #279 206-what-is-webassembly_-256k
8:54
Урок #280 207-getting-started-with-rust-226k
6:21
Урок #281 208-exploring-the-starter-project-255k
6:47
Урок #282 209-variables-212k
5:16
Урок #283 210-data-types-187k
6:48
Урок #284 211-debugging-with-macros-226k
6:54
Урок #285 212-control-flow-286k
4:40
Урок #286 213-match-expressions-238k
7:50
Урок #287 214-arrays-252k
2:51
Урок #288 215-vectors-228k
5:21
Урок #289 216-structures-220k
4:08
Урок #290 217-ownership-243k
6:49
Урок #291 218-results-333k
8:20
Урок #292 219-preparing-the-project-268k
3:40
Урок #293 220-installing-webpack-231k
3:40
Урок #294 221-configuring-webpack-286k
10:20
Урок #295 222-reading-files-380k
8:11
Урок #296 223-compiling-rust-with-webpack-342k
4:47
Урок #297 224-importing-web-assembly-375k
5:47
Урок #298 225-logging-files-255k
9:22
Урок #299 226-base64-decoding-337k
3:49
Урок #300 227-loading-an-image-from-memory
3:00
Урок #301 228-grayscaling-an-image-419k
2:54
Урок #302 229-buffering-an-image-334k
5:18
Урок #303 230-encoding-an-image-343k
5:11
Урок #304 231-app-deployment-353k
4:07
Урок #305 232-understanding-ffmpeg-330k
2:47
Урок #306 233-installing-ffmpeg-206k
5:07
Урок #307 234-custom-asset-paths-308k
5:18
Урок #308 235-adding-support-for-sharedarraybuffer-313k
6:48
Урок #309 236-loading-ffmpeg-with-a-service
4:08
Урок #310 237-initializing-ffmpeg-494k
6:06
Урок #311 238-saving-files-in-memory-338k
6:29
Урок #312 239-generating-a-screenshot-290k
11:05
Урок #313 240-generating-multiple-screenshots-354k
5:13
Урок #314 241-creating-screenshot-urls-329k
5:48
Урок #315 242-rendering-screenshots-610k
3:09
Урок #316 243-adding-feedback-536k
3:31
Урок #317 244-selecting-a-screenshot-478k
4:19
Урок #318 245-updating-the-firebase-storage-rules-280k
2:04
Урок #319 246-uploading-a-blob-423k
7:11
Урок #320 247-recalculating-the-upload-progress-491k
5:04
Урок #321 248-the-forkjoin-operator-544k
5:15
Урок #322 249-deleting-screenshots-394k
4:27
Урок #323 250-introduction-1545k
1:44
Урок #324 251-creating-a-list-component-748k
2:01
Урок #325 252-handling-scroll-events-541k
8:26
Урок #326 253-querying-for-clips-344k
12:43
Урок #327 254-rendering-clips-on-the-home-page-477k
5:20
Урок #328 255-understanding-cross-origin-issues-200k
3:44
Урок #329 256-fixing-cross-origin-issues-285k
8:10
Урок #330 257-fixing-the-timestamp-396k
5:09
Урок #331 258-rendering-clips-on-the-clip-page-554k
3:47
Урок #332 259-installing-videojs-276k
1:38
Урок #333 260-selecting-the-video-player-398k
3:22
Урок #334 261-initializing-the-video-player-443k
1:42
Урок #335 262-clip-styles-468k
2:10
Урок #336 263-resolving-data-with-a-guard-400k
8:34
Урок #337 264-dynamically-rendering-the-video-443k
6:42
Урок #338 265-fixing-the-manage-page-501k
1:03
Урок #339 266-copying-links-to-the-clipboard-399k
5:26
Урок #340 267-production-budgets-1578k
3:29
Урок #341 268-modifying-firebase-rules-225k
3:46
Урок #342 269-deploying-an-app-with-vercel-335k
10:46
Урок #343 270-introduction-to-testing-197k
11:27
Урок #344 271-understanding-karma-and-jasmine-240k
3:12
Урок #345 272-preparing-our-app-for-testing-495k
3:12
Урок #346 273-writing-a-sanity-test-247k
6:05
Урок #347 274-angulars-test-bed-utility-275k
5:33
Урок #348 275-testing-a-components-instance-326k
6:28
Урок #349 276-querying-the-components-template-355k
6:40
Урок #350 277-inverting-matchers-374k
3:16
Урок #351 278-testing-nested-components-471k
5:10
Урок #352 279-testing-content-projection-380k
6:34
Урок #353 280-custom-matcher-error-messages-471k
2:33
Урок #354 281-mocking-services-388k
6:30
Урок #355 282-overriding-a-dependency-413k
2:23
Урок #356 283-providing-the-router-in-tests-574k
1:54
Урок #357 284-exercise-testing-the-logout-link-387k
3:00
Урок #358 285-simulating-dom-events-389k
4:02
Урок #359 286-installing-cypress-258k
6:46
Урок #360 287-exploring-cypress-387k
6:04
Урок #361 288-writing-an-e2e-sanity-test-507k
6:09
Урок #362 289-testing-the-video-player-306k
8:54
Урок #363 290-thank-you-1188k
1:18
Урок #364 291-understanding-frameworks-265k
4:41
Урок #365 292-the-angular-cli-400k
4:09
Урок #366 293-latest-version-of-angular-526k
2:21
Урок #367 294-creating-a-new-application-322k
3:35
Урок #368 295-starting-the-server-341k
5:08
Урок #369 296-reviewing-the-configuration-files-307k
7:43
Урок #370 297-main-entry-file-286k
1:26
Урок #371 298-aot-compilation-296k
5:02
Урок #372 299-aot-compilation-325k
2:59
Урок #373 300-bootstrapping-angular-432k
2:47
Урок #374 301-enabling-production-mode-298k
4:29
Урок #375 302-understanding-modules-351k
4:01
Урок #376 303-creating-modules-462k
6:05
Урок #377 304-understanding-components-343k
1:59
Урок #378 305-creating-components-385k
6:00
Урок #379 306-external-templates-and-styles-386k
6:00
Урок #380 307-everything-else-580k
3:45
Урок #381 308-introduction-to-typescript-305k
5:09
Урок #382 309-installing-typescript-403k
3:46
Урок #383 310-type-annotations-383k
4:50
Урок #384 311-variables-319k
4:40
Урок #385 312-union-types-264k
3:14
Урок #386 313-arrays-286k
3:00
Урок #387 314-objects-303k
3:31
Урок #388 315-interfaces-316k
3:46
Урок #389 316-classes-297k
3:31
Урок #390 317-generics-344k
7:42
Урок #391 318-why-decorators_-373k
4:39
Урок #392 319-typescript-configuration-697k
1:56
Урок #393 320-writing-decorators-229k
7:04
Урок #394 321-interpolation-342k
7:45
Урок #395 322-property-binding-376k
3:49
Урок #396 323-event-binding-389k
6:18
Урок #397 324-type-assertions-494k
5:38
Урок #398 325-creating-a-component-457k
5:32
Урок #399 326-custom-properties-414k
6:44
Урок #400 327-input-aliases-522k
2:45
Урок #401 328-emitting-events-460k
9:11
Урок #402 329-content-projection-475k
3:17
Урок #403 330-discovering-lifecycle-hooks-549k
6:08
Урок #404 331-exploring-more-lifecycle-hooks-497k
10:33
Урок #405 332-scoped-css-510k
4:23
Урок #406 333-understanding-pipes-273k
2:07
Урок #407 334-pipe-basics-560k
5:42
Урок #408 335-angular-dev-tools-446k
2:39
Урок #409 336-pipe-parameters-478k
6:15
Урок #410 337-dealing-with-numbers-539k
7:13
Урок #411 338-debugging-with-pipes-438k
1:51
Урок #412 339-understanding-directives-383k
2:00
Урок #413 340-the-ngclass-directive-476k
5:09
Урок #414 341-the-ngstyle-directive-459k
4:11
Урок #415 342-understanding-ng-template-581k
2:11
Урок #416 343-the-ngif-directive-580k
3:51
Урок #417 344-the-ngfor-directive-495k
5:43
Урок #418 345-introduction-to-master-project-1266k
6:03
Урок #419 346-what-is-tailwind_-384k
5:37
Урок #420 347-installing-tailwind-302k
7:16
Урок #421 348-configuring-tailwind-479k
2:30
Урок #422 349-practicing-with-tailwind-741k
5:25
Урок #423 351-whats-next_-249k
3:31
Урок #424 352-creating-a-user-module-469k
4:36
Урок #425 353-navigation-and-modal-components-627k
5:34
Урок #426 354-exporting-components-757k
3:24
Урок #427 355-designing-a-modal-374k
2:24
Урок #428 356-creating-a-shared-module-458k
4:09
Урок #429 357-creating-a-reusable-modal-871k
2:48
Урок #430 358-multi-slot-content-projection-648k
3:12
Урок #431 359-understanding-services-264k
3:32
Урок #432 360-creating-a-service-503k
1:42
Урок #433 361-understanding-dependency-injection-384k
5:35
Урок #434 362-injecting-services-471k
5:12
Урок #435 363-opening-the-modal-642k
5:52
Урок #436 364-closing-the-modal-769k
3:10
Урок #437 365-understanding-singletons-426k
3:47
Урок #438 366-creating-an-id-system-484k
5:46
Урок #439 367-refactoring-the-service-400k
5:05
Урок #440 368-updating-the-components-808k
4:47
Урок #441 369-memory-leaks-483k
6:03
Урок #442 370-fixing-the-memory-leak-546k
4:47
Урок #443 371-css-issues-776k
5:49
Урок #444 372-creating-a-tabs-component-547k
6:04
Урок #445 373-the-contentchildren-decorator-585k
5:40
Урок #446 374-the-querylist-object-557k
3:23
Урок #447 375-looping-through-the-tabs-706k
3:20
Урок #448 376-setting-an-active-tab-541k
7:07
Урок #449 377-toggling-tabs-616k
4:18
Урок #450 378-preventing-the-default-behavior-955k
2:00
Урок #451 379-preparing-the-forms-470k
5:43
Урок #452 380-registering-a-new-form-662k
4:16
Урок #453 381-adding-form-controls-639k
3:16
Урок #454 382-binding-a-form-689k
3:06
Урок #455 383-form-validation-690k
7:12
Урок #456 384-understanding-errors-1002k
4:17
Урок #457 385-handling-errors-847k
5:17
Урок #458 386-form-controller-status-722k
5:50
Урок #459 387-designing-an-input-component-749k
3:51
Урок #460 388-binding-form-controls-619k
8:24
Урок #461 389-updating-the-template-787k
6:28
Урок #462 390-validating-emails-783k
6:49
Урок #463 391-validating-numbers-716k
5:57
Урок #464 392-validating-passwords-with-patterns-899k
6:00
Урок #465 393-input-masking-351k
5:54
Урок #466 394-applying-input-masking-802k
6:06
Урок #467 395-disabling-buttons-587k
5:11
Урок #468 396-handling-form-submission-779k
2:50
Урок #469 397-designing-an-alert-component-461k
10:14
Урок #470 398-importing-the-formsmodule-487k
2:23
Урок #471 399-registering-a-new-form-560k
4:05
Урок #472 400-two-way-binding-621k
6:38
Урок #473 401-template-variables-735k
5:46
Урок #474 402-attribute-validation-934k
3:24
Урок #475 403-handling-error-messages-923k
3:41
Урок #476 404-preparing-the-password-field-1009k
4:14
Урок #477 405-handling-form-submission-813k
4:49
Урок #478 406-exercise-imposter-syndrome-996k
2:56
Урок #479 407-introduction-to-rxjs-322k
6:03
Урок #480 408-observables-351k
5:22
Урок #481 409-observers-512k
4:20
Урок #482 410-pushing-asynchronous-values-563k
3:39
Урок #483 411-unsubscribing-from-observables-614k
3:33
Урок #484 412-declarative-programming-with-operators-422k
5:48
Урок #485 413-timing-operators-517k
5:25
Урок #486 487-uploading-files-with-firebase-zero-to-mastery-academy
6:54
Урок #487 488-firebase-rules-and-validation-zero-to-mastery-academy
7:23
Урок #488 489-adding-an-alert-component-zero-to-mastery-academy
5:15
Урок #489 490-upload-progress-observable-zero-to-mastery-academy
3:47
Урок #490 491-handling-errors-and-successful-uploads-zero-to-mastery-academy
10:23
Урок #491 492-storing-the-file-data-zero-to-mastery-academy
8:29
Урок #492 493-adding-the-file-data-to-the-database-zero-to-mastery-academy
8:12
Урок #493 494-firebase-references-and-snapshots-zero-to-mastery-academy
2:22
Урок #494 495-disabling-forms-zero-to-mastery-academy
2:48
Урок #495 496-fallback-upload-zero-to-mastery-academy
6:18
Урок #496 497-canceling-uploads-zero-to-mastery-academy
5:46
Урок #497 498-redirection-after-upload-zero-to-mastery-academy
6:25
Урок #498 499-storing-a-timestamp-zero-to-mastery-academy
4:38
Урок #499 500-querying-the-database-zero-to-mastery-academy
8:53
Урок #500 501-storing-the-list-of-clips-zero-to-mastery-academy
7:20
Урок #501 502-displaying-the-list-of-clips-zero-to-mastery-academy
2:12
Урок #502 503-preparing-the-form-zero-to-mastery-academy
7:05
Урок #503 504-passing-on-the-clip-data-zero-to-mastery-academy
3:27
Урок #504 505-binding-the-edit-form-zero-to-mastery-academy
6:33
Урок #505 506-updating-clips-zero-to-mastery-academy
9:18
Урок #506 507-updating-the-list-of-clips-zero-to-mastery-academy
7:00
Урок #507 508-deleting-a-clip-from-the-storage-database-zero-to-mastery-academy
10:02
Урок #508 509-sorting-clips-with-behavior-subjects-zero-to-mastery-academy
11:06
Урок #509 510-composite-indexes-zero-to-mastery-academy
4:32
Урок #510 511-what-is-webassembly_-zero-to-mastery-academy
8:52
Урок #511 512-getting-started-with-rust-zero-to-mastery-academy
6:17
Урок #512 513-exploring-the-starter-project-zero-to-mastery-academy
6:46
Урок #513 514-variables-zero-to-mastery-academy
5:14
Урок #514 515-data-types-zero-to-mastery-academy
6:47
Урок #515 516-debugging-with-macros-zero-to-mastery-academy
6:51
Урок #516 517-control-flow-zero-to-mastery-academy
4:38
Урок #517 518-match-expressions-zero-to-mastery-academy
7:48
Урок #518 519-arrays-zero-to-mastery-academy
2:50
Урок #519 520-vectors-zero-to-mastery-academy
5:19
Урок #520 521-structures-zero-to-mastery-academy
4:06
Урок #521 522-ownership-zero-to-mastery-academy
6:48
Урок #522 523-results-zero-to-mastery-academy
8:19
Урок #523 524-preparing-the-project-zero-to-mastery-academy
3:40
Урок #524 525-installing-webpack-zero-to-mastery-academy
3:40
Урок #525 526-configuring-webpack-zero-to-mastery-academy
10:05
Урок #526 527-reading-files-zero-to-mastery-academy
8:09
Урок #527 528-compiling-rust-with-webpack-zero-to-mastery-academy
4:47
Урок #528 529-importing-web-assembly-zero-to-mastery-academy
5:43
Урок #529 530-logging-files-zero-to-mastery-academy
9:15
Урок #530 531-base64-decoding-zero-to-mastery-academy
3:07
Урок #531 532-base64-decoding-zero-to-mastery-academy
3:22
Урок #532 533-grayscaling-an-image-zero-to-mastery-academy
2:57
Урок #533 534-buffering-an-image-zero-to-mastery-academy
4:20
Урок #534 535-encoding-an-image-zero-to-mastery-academy
5:39
Урок #535 536-app-deployment-zero-to-mastery-academy
4:05
Урок #536 537-understanding-ffmpeg-zero-to-mastery-academy
2:44
Урок #537 538-installing-ffmpeg-255k
5:01
Урок #538 539-custom-asset-paths-zero-to-mastery-academy
5:26
Урок #539 540-adding-support-for-sharedarraybuffer-zero-to-mastery-academy
6:45
Урок #540 541-adding-support-for-sharedarraybuffer-zero-to-mastery-academy
4:12
Урок #541 542-initializing-ffmpeg-zero-to-mastery-academy
6:47
Урок #542 543-saving-files-in-memory-zero-to-mastery-academy
5:45
Урок #543 544-generating-a-screenshot-zero-to-mastery-academy
11:01
Урок #544 545-generating-multiple-screenshots-zero-to-mastery-academy
5:09
Урок #545 546-creating-screenshot-urls-zero-to-mastery-academy
5:47
Урок #546 547-bypassing-sanitization-with-pipes-zero-to-mastery-academy
8:25
Урок #547 548-adding-feedback-zero-to-mastery-academy
3:39
Урок #548 549-selecting-a-screenshot-zero-to-mastery-academy
4:15
Урок #549 550-updating-the-firebase-storage-rules-zero-to-mastery-academy
2:02
Урок #550 551-uploading-a-blob-zero-to-mastery-academy
6:32
Урок #551 552-recalculating-the-upload-progress-zero-to-mastery-academy
4:48
Урок #552 553-the-forkjoin-operator-zero-to-mastery-academy
7:22
Урок #553 554-deleting-screenshots-zero-to-mastery-academy
3:46
Урок #554 555-section-overview-zero-to-mastery-academy
1:43
Урок #555 556-creating-a-list-component-zero-to-mastery-academy
1:48
Урок #556 557-handling-scroll-events-zero-to-mastery-academy
7:40
Урок #557 558-querying-for-clips-zero-to-mastery-academy
10:38
Урок #558 559-rendering-clips-on-the-home-page-zero-to-mastery-academy
4:51
Урок #559 560-understanding-cross-origin-issues-zero-to-mastery-academy
3:44
Урок #560 561-fixing-cross-origin-issues-zero-to-mastery-academy
8:09
Урок #561 562-fixing-the-timestamp-zero-to-mastery-academy
8:15
Урок #562 563-rendering-clips-on-the-clip-page-zero-to-mastery-academy
3:30
Урок #563 564-installing-videojs-zero-to-mastery-academy
1:37
Урок #564 565-selecting-elements-with-the-viewchild-decorator-zero-to-mastery-academy
5:59
Урок #565 566-initializing-the-video-player-zero-to-mastery-academy
2:03
Урок #566 567-styles-without-view-encapsulation-zero-to-mastery-academy
5:17
Урок #567 568-tailwinds-aspect-ratio-classes-zero-to-mastery-academy
1:26
Урок #568 569-resolving-data-with-a-guard-zero-to-mastery-academy
8:09
Урок #569 570-dynamically-rendering-the-video-zero-to-mastery-academy
7:02
Урок #570 571-fixing-the-manage-page-zero-to-mastery-academy
1:04
Урок #571 572-copying-links-to-the-clipboard-zero-to-mastery-academy
6:04
Урок #572 573-lazy-loading-modules-zero-to-mastery-academy
6:32
Урок #573 574-production-budgets-zero-to-mastery-academy
3:27
Урок #574 575-modifying-firebase-rules-zero-to-mastery-academy
3:43
Урок #575 576-deploying-an-app-with-vercel-zero-to-mastery-academy
10:44
Урок #576 577-introduction-to-testing-zero-to-mastery-academy
11:20
Урок #577 578-understanding-karma-and-jasmine-zero-to-mastery-academy
8:14
Урок #578 579-preparing-our-app-for-testing-zero-to-mastery-academy
2:57
Урок #579 580-writing-a-sanity-test-zero-to-mastery-academy
6:01
Урок #580 581-angulars-test-bed-utility-zero-to-mastery-academy
5:55
Урок #581 582-testing-a-components-instance-zero-to-mastery-academy
6:27
Урок #582 583-querying-the-components-template-zero-to-mastery-academy
6:39
Урок #583 584-inverting-matchers-zero-to-mastery-academy
3:11
Урок #584 585-testing-nested-components-zero-to-mastery-academy
4:42
Урок #585 586-testing-content-projection-zero-to-mastery-academy
6:24
Урок #586 587-custom-matcher-error-messages-zero-to-mastery-academy
2:31
Урок #587 588-mocking-services-zero-to-mastery-academy
6:32
Урок #588 589-overriding-a-dependency-zero-to-mastery-academy
2:44
Урок #589 590-importing-the-router-testing-module-zero-to-mastery-academy
1:59
Урок #590 591-exercise-testing-the-logout-link-zero-to-mastery-academy
3:05
Урок #591 592-simulating-dom-events-zero-to-mastery-academy
3:59
Урок #592 593-installing-cypress-zero-to-mastery-academy
6:10
Урок #593 594-exploring-cypress-zero-to-mastery-academy
6:05
Урок #594 595-writing-an-e2e-sanity-test-zero-to-mastery-academy
6:04
Урок #595 350-loading-static-assets
6:17
Урок #596 596-testing-the-video-player-zero-to-mastery-academy
8:53
Array
(
[bitrate] => 3428503
[filesize] => 63683947
[mime_type] => video/mp4
[length] => 143
[length_formatted] => 2:23
[width] => 1920
[height] => 1080
[fileformat] => mp4
[dataformat] => quicktime
[audio] => Array
(
[dataformat] => mp4
[bitrate] => 128024
[codec] => ISO/IEC 14496-3 AAC
[sample_rate] => 44100
[channels] => 2
[bits_per_sample] => 16
[lossless] =>
[channelmode] => stereo
[compression_ratio] => 0.090719954648526
)
[created_timestamp] => -2082844800
)