AngularAtlasAusg. 22.2

Kap. 11Qualität & Performance50 / 75

Performance — eine Checkliste

Was wirklich zählt: OnPush + Signals, track, @defer, Lazy Routes, Bilder, Bundles und Hydration.

~0 Min. Lesezeit Offizielle Doku

Im modernen Angular kommt gute Performance vor allem von den Standardeinstellungen: OnPush, Signals, zoneless, Lazy Routes, @defer. Die Checkliste unten gehst du durch, wenn etwas langsam ist — in der Reihenfolge, in der es sich lohnt. Wird die App langsamer, je länger der Tab offen ist, liegt es meist nicht am Rendern, sondern an einem Memory Leak.

Checkliste

RENDERING
  [ ] OnPush-Komponenten (Standard in v22) + Zustand in Signals
  [ ] @for mit track auf eine stabile ID (nicht Identität bei neu geladenen Daten)
  [ ] Berechnungen in computed() / einer reinen Pipe, nicht in Methoden, die das Template aufruft
  [ ] Sehr große Listen → Virtual Scroll (CDK ScrollingModule) oder Paginierung

LADEN
  [ ] Alle Seiten lazy (loadComponent / loadChildren)
  [ ] Schwere Komponenten unterhalb des sichtbaren Bereichs → @defer (on viewport / interaction)
  [ ] Schwere, selten genutzte Services → injectAsync() (v22)
  [ ] Bilder mit NgOptimizedImage (ngSrc, width/height, priority beim LCP-Bild)
  [ ] Bundle-Budgets in angular.json; mit source-map-explorer prüfen, was drin landet

SSR (falls zutreffend)
  [ ] Inkrementelle Hydration (Standard in v22) + @defer (hydrate on ...)
  [ ] Event Replay für Klicks während der Hydration
  [ ] TransferCache für die Requests, die auf dem Server laufen

track ist wichtiger, als du denkst

Kommen vom Server neu geladene Daten als neue Objekte an, hält Angular bei track row (Identität) jede Zeile für „neu“ und zerstört bzw. erzeugt das gesamte DOM neu. Mit track row.id werden die vorhandenen Zeilen wiederverwendet und nur das aktualisiert, was sich geändert hat.

Bonus: Im Dev-Modus erkennt Angular das Problem selbst und gibt die Warnung NG0956 („track by identity caused re-creation of the entire collection“) aus.

Live3000 Zeilen: track id vs. track Identität
„Refetch“ (NEUE Objekte, gleiche IDs) für 3000 Zeilen:
Element 0802
Element 1558
Element 252
Element 339
Element 4839
Element 5623
Element 6701
Element 7462
Element 8856
Element 9978
Element 10982
Element 1161
Element 12914
Element 13702
Element 14726
Element 15282
Element 16196
Element 17982
Element 18465
Element 19566
Element 20979
Element 2167
Element 22855
Element 23459
Element 24670
Element 25104
Element 26980
Element 27382
Element 28968
Element 29975
Element 3098
Element 31676
Element 3271
Element 33208
Element 34322
Element 35943
Element 36671
Element 37801
Element 38133
Element 39986
Element 40757
Element 4184
Element 42550
Element 43621
Element 44994
Element 45465
Element 46144
Element 47729
Element 48169
Element 49961
Element 50542
Element 51988
Element 52570
Element 53728
Element 54282
Element 55977
Element 56695
Element 57139
Element 58885
Element 59573
Element 60309
Element 61736
Element 62761
Element 63224
Element 64325
Element 65110
Element 66603
Element 67739
Element 68791
Element 69703
Element 70566
Element 71463
Element 72299
Element 73728
Element 7492
Element 75992
Element 76758
Element 77484
Element 78976
Element 79221
Element 80546
Element 81751
Element 82248
Element 83235
Element 84558
Element 85474
Element 86173
Element 87417
Element 88883
Element 89944
Element 90123
Element 91109
Element 92327
Element 93179
Element 94838
Element 95854
Element 96132
Element 97313
Element 98437
Element 99382
Element 100458
Element 101647
Element 102571
Element 103959
Element 104988
Element 105863
Element 106657
Element 107130
Element 108403
Element 109242
Element 110960
Element 111266
Element 112772
Element 113871
Element 11491
Element 115558
Element 11673
Element 117411
Element 118203
Element 119703
Element 120557
Element 121237
Element 122477
Element 123238
Element 124655
Element 125701
Element 126266
Element 127196
Element 12883
Element 129902
Element 130918
Element 131738
Element 132137
Element 133868
Element 134579
Element 135820
Element 136734
Element 137822
Element 13810
Element 139475
Element 140479
Element 141919
Element 142201
Element 143351
Element 144703
Element 145719
Element 146133
Element 147341
Element 148956
Element 149123
Element 150764
Element 151492
Element 152346
Element 153717
Element 154591
Element 155468
Element 156846
Element 157622
Element 158734
Element 15965
Element 160505
Element 1614
Element 162777
Element 163322
Element 164904
Element 16594
Element 166512
Element 167735
Element 168832
Element 169204
Element 17027
Element 171545
Element 172537
Element 173566
Element 174647
Element 175855
Element 176794
Element 17779
Element 178334
Element 17967
Element 180405
Element 181299
Element 182691
Element 18374
Element 18431
Element 185673
Element 186622
Element 18794
Element 188413
Element 189471
Element 190883
Element 191616
Element 192670
Element 193117
Element 19465
Element 195994
Element 196820
Element 197127
Element 198771
Element 199994
Element 200487
Element 201596
Element 202466
Element 203189
Element 204596
Element 205619
Element 206692
Element 207341
Element 208298
Element 209226
Element 210771
Element 211313
Element 212820
Element 213143
Element 214127
Element 215620
Element 216462
Element 217126
Element 218190
Element 219596
Element 220689
Element 221101
Element 222959
Element 223502
Element 224568
Element 225765
Element 226608
Element 227303
Element 228824
Element 229385
Element 230917
Element 231564
Element 232772
Element 233318
Element 234477
Element 235909
Element 236939
Element 237553
Element 23883
Element 239679
Element 24034
Element 241247
Element 242992
Element 243462
Element 244419
Element 245123
Element 246325
Element 247706
Element 248183
Element 249212
Element 250209
Element 251942
Element 252407
Element 253586
Element 254229
Element 255722
Element 256470
Element 257113
Element 25895
Element 259801
Element 260589
Element 261133
Element 262931
Element 263647
Element 26424
Element 265731
Element 266138
Element 267319
Element 268233
Element 269115
Element 270133
Element 271851
Element 272776
Element 273655
Element 274409
Element 275146
Element 276981
Element 27740
Element 278743
Element 27930
Element 280295
Element 281476
Element 282249
Element 28399
Element 28427
Element 285243
Element 286480
Element 287831
Element 288963
Element 289239
Element 290544
Element 291929
Element 292562
Element 293874
Element 294919
Element 295783
Element 296106
Element 297240
Element 298902
Element 29996
Element 300352
Element 301187
Element 302299
Element 303148
Element 304559
Element 305935
Element 306304
Element 307118
Element 308536
Element 30919
Element 310651
Element 311437
Element 312967
Element 313204
Element 314419
Element 315865
Element 316259
Element 317261
Element 318318
Element 319774
Element 320495
Element 321369
Element 322175
Element 323310
Element 3242
Element 325147
Element 326486
Element 327259
Element 328471
Element 329941
Element 330410
Element 331918
Element 332604
Element 333334
Element 334768
Element 335784
Element 336607
Element 337613
Element 338530
Element 339949
Element 340394
Element 341598
Element 342288
Element 343431
Element 34416
Element 345501
Element 346250
Element 347651
Element 348138
Element 349287
Element 350475
Element 351125
Element 352173
Element 353935
Element 354311
Element 355604
Element 3569
Element 357446
Element 35871
Element 359590
Element 360383
Element 361173
Element 362942
Element 363585
Element 364963
Element 365476
Element 366626
Element 367428
Element 368538
Element 369453
Element 37012
Element 371998
Element 372261
Element 373504
Element 374670
Element 375104
Element 376863
Element 377217
Element 378977
Element 379721
Element 380438
Element 381339
Element 382239
Element 383774
Element 384654
Element 385797
Element 386178
Element 387385
Element 388231
Element 389705
Element 390582
Element 391254
Element 39270
Element 393914
Element 394582
Element 395683
Element 396304
Element 397991
Element 398697
Element 399470
Element 400100
Element 401536
Element 402270
Element 403984
Element 404160
Element 405741
Element 406841
Element 407385
Element 408211
Element 409773
Element 410630
Element 411371
Element 412128
Element 413953
Element 414788
Element 415228
Element 416921
Element 417752
Element 418973
Element 41977
Element 420679
Element 421132
Element 422629
Element 423480
Element 424171
Element 425600
Element 426155
Element 427886
Element 428932
Element 429272
Element 430184
Element 431270
Element 43221
Element 433472
Element 434165
Element 435549
Element 436145
Element 437922
Element 438872
Element 439838
Element 440643
Element 441102
Element 442703
Element 443829
Element 444733
Element 445233
Element 44650
Element 447268
Element 448931
Element 449184
Element 450874
Element 45156
Element 452546
Element 453550
Element 454974
Element 455115
Element 456229
Element 457114
Element 458223
Element 459252
Element 460677
Element 461644
Element 462418
Element 463479
Element 464155
Element 465461
Element 466939
Element 467770
Element 468782
Element 469128
Element 470346
Element 47135
Element 472419
Element 473457
Element 474762
Element 475283
Element 476259
Element 477412
Element 478440
Element 479949
Element 480185
Element 481521
Element 482204
Element 48393
Element 484311
Element 485221
Element 486468
Element 48764
Element 488444
Element 48978
Element 490416
Element 491938
Element 492643
Element 493887
Element 494613
Element 49519
Element 496616
Element 497862
Element 498156
Element 499948
Element 50078
Element 501569
Element 502660
Element 503293
Element 504584
Element 505323
Element 506158
Element 507389
Element 508289
Element 509986
Element 510184
Element 511534
Element 512334
Element 513901
Element 514782
Element 515517
Element 516830
Element 517320
Element 51869
Element 519615
Element 520587
Element 52199
Element 522622
Element 523667
Element 524945
Element 525680
Element 526768
Element 527225
Element 528498
Element 5291
Element 530253
Element 531471
Element 532561
Element 533566
Element 534597
Element 53570
Element 536242
Element 537608
Element 538827
Element 539178
Element 540427
Element 541374
Element 542452
Element 543461
Element 544179
Element 545668
Element 546344
Element 547918
Element 548634
Element 549941
Element 550193
Element 551879
Element 552749
Element 553541
Element 554878
Element 555812
Element 556659
Element 557116
Element 558478
Element 559840
Element 560814
Element 561248
Element 562474
Element 563385
Element 564958
Element 565221
Element 566119
Element 567439
Element 568235
Element 569890
Element 570443
Element 571818
Element 572661
Element 573895
Element 574100
Element 575116
Element 576774
Element 577429
Element 578823
Element 579770
Element 580697
Element 581740
Element 582537
Element 58361
Element 584833
Element 585428
Element 586392
Element 587566
Element 58887
Element 589684
Element 5900
Element 591637
Element 592336
Element 593775
Element 594911
Element 595725
Element 596487
Element 59716
Element 598405
Element 599883
Element 600755
Element 60116
Element 602392
Element 603425
Element 60492
Element 605668
Element 606173
Element 607538
Element 608775
Element 609595
Element 610442
Element 611124
Element 612419
Element 613336
Element 614326
Element 615117
Element 616532
Element 617328
Element 61842
Element 619772
Element 620430
Element 621934
Element 622321
Element 623733
Element 624603
Element 625440
Element 626857
Element 62743
Element 628979
Element 629935
Element 630832
Element 631232
Element 632673
Element 63370
Element 634874
Element 635420
Element 636888
Element 637506
Element 638213
Element 639229
Element 640483
Element 641398
Element 642976
Element 643587
Element 644290
Element 645864
Element 646810
Element 647893
Element 648468
Element 649614
Element 650564
Element 65169
Element 652754
Element 653233
Element 654576
Element 655912
Element 656755
Element 657487
Element 658877
Element 659127
Element 660476
Element 661699
Element 662251
Element 66325
Element 664748
Element 665369
Element 666922
Element 667562
Element 668932
Element 669839
Element 670279
Element 671545
Element 672310
Element 673374
Element 674691
Element 675874
Element 676376
Element 677341
Element 678407
Element 679602
Element 680420
Element 681985
Element 682514
Element 683794
Element 684897
Element 685397
Element 686727
Element 687591
Element 688607
Element 689964
Element 690992
Element 691576
Element 692330
Element 693116
Element 69451
Element 69573
Element 69655
Element 697405
Element 698616
Element 699672
Element 700260
Element 701494
Element 702423
Element 703388
Element 704609
Element 70594
Element 70688
Element 707179
Element 708250
Element 709276
Element 710921
Element 711117
Element 712986
Element 713893
Element 714928
Element 7151
Element 716859
Element 717172
Element 718307
Element 719704
Element 720507
Element 721976
Element 72252
Element 72328
Element 724948
Element 725970
Element 726776
Element 727625
Element 728920
Element 729810
Element 730679
Element 731365
Element 732897
Element 733653
Element 73460
Element 735302
Element 73633
Element 73797
Element 738875
Element 739588
Element 740172
Element 741120
Element 742463
Element 743615
Element 744899
Element 745252
Element 746337
Element 747329
Element 74843
Element 749413
Element 750696
Element 75151
Element 752566
Element 753735
Element 754208
Element 755558
Element 756926
Element 757121
Element 75854
Element 759388
Element 760872
Element 76120
Element 762446
Element 763134
Element 764466
Element 765291
Element 766957
Element 767461
Element 768224
Element 769278
Element 77027
Element 771118
Element 772838
Element 773375
Element 774800
Element 775542
Element 77611
Element 777101
Element 778313
Element 779736
Element 780971
Element 781689
Element 782979
Element 783954
Element 784319
Element 78574
Element 786534
Element 787954
Element 788897
Element 789155
Element 79034
Element 791131
Element 792543
Element 793434
Element 794461
Element 795702
Element 79657
Element 797478
Element 798219
Element 799249
Element 800501
Element 8012
Element 802457
Element 803631
Element 804638
Element 805424
Element 80638
Element 807820
Element 808895
Element 809808
Element 810478
Element 811854
Element 812643
Element 813629
Element 814636
Element 815486
Element 81693
Element 817727
Element 818698
Element 819264
Element 820879
Element 82142
Element 822601
Element 823813
Element 82468
Element 825757
Element 826891
Element 82767
Element 828650
Element 829475
Element 830214
Element 831629
Element 83214
Element 833219
Element 834551
Element 835353
Element 836589
Element 837263
Element 838858
Element 839970
Element 84042
Element 84173
Element 842221
Element 843303
Element 844968
Element 845921
Element 846680
Element 847815
Element 848842
Element 849754
Element 850290
Element 851317
Element 852913
Element 853955
Element 854621
Element 855326
Element 856455
Element 857189
Element 858677
Element 859286
Element 860195
Element 861636
Element 862507
Element 863884
Element 864549
Element 86529
Element 866298
Element 867133
Element 868253
Element 869124
Element 870536
Element 87136
Element 872589
Element 873627
Element 874493
Element 875664
Element 87679
Element 877259
Element 878713
Element 879970
Element 880157
Element 881470
Element 882253
Element 883723
Element 884721
Element 885137
Element 88625
Element 887866
Element 888637
Element 889574
Element 890883
Element 891137
Element 892574
Element 893682
Element 894927
Element 895414
Element 896903
Element 897622
Element 898167
Element 899144
Element 900211
Element 901643
Element 902620
Element 903701
Element 904874
Element 905110
Element 906774
Element 90777
Element 90853
Element 90965
Element 91016
Element 911610
Element 912821
Element 913574
Element 914562
Element 915668
Element 916915
Element 917868
Element 918513
Element 919601
Element 920299
Element 921339
Element 922362
Element 923430
Element 924715
Element 925199
Element 926573
Element 927855
Element 928228
Element 92973
Element 930985
Element 93195
Element 932652
Element 933280
Element 934427
Element 935226
Element 936643
Element 937724
Element 938780
Element 939765
Element 940547
Element 941564
Element 942327
Element 943647
Element 944581
Element 945911
Element 946317
Element 947721
Element 948641
Element 949202
Element 95032
Element 95178
Element 952913
Element 953113
Element 954233
Element 955497
Element 956661
Element 957184
Element 958467
Element 959712
Element 960990
Element 961311
Element 962212
Element 963435
Element 964936
Element 965848
Element 966286
Element 967424
Element 968185
Element 969665
Element 970501
Element 971209
Element 972496
Element 97342
Element 974314
Element 975577
Element 976469
Element 977658
Element 97832
Element 979977
Element 980591
Element 981188
Element 982362
Element 983298
Element 984611
Element 985452
Element 986688
Element 987327
Element 988538
Element 989190
Element 990749
Element 991567
Element 992279
Element 993330
Element 994152
Element 995391
Element 996215
Element 997571
Element 998162
Element 999716
Element 1000513
Element 1001109
Element 100293
Element 1003669
Element 1004672
Element 1005351
Element 10069
Element 1007210
Element 1008722
Element 1009199
Element 1010175
Element 1011988
Element 1012153
Element 1013902
Element 1014352
Element 1015665
Element 1016209
Element 1017252
Element 1018433
Element 1019396
Element 1020951
Element 1021158
Element 1022837
Element 1023307
Element 1024615
Element 1025359
Element 1026307
Element 1027146
Element 1028642
Element 1029654
Element 1030341
Element 103174
Element 103273
Element 1033138
Element 1034614
Element 1035276
Element 1036725
Element 1037558
Element 1038262
Element 1039274
Element 1040412
Element 1041102
Element 1042249
Element 1043209
Element 1044771
Element 1045417
Element 1046281
Element 1047404
Element 1048642
Element 1049202
Element 1050641
Element 1051812
Element 1052740
Element 1053266
Element 1054273
Element 1055151
Element 1056942
Element 1057890
Element 1058459
Element 1059494
Element 1060190
Element 106192
Element 1062566
Element 1063299
Element 1064426
Element 1065491
Element 1066574
Element 106763
Element 1068891
Element 1069150
Element 1070490
Element 1071999
Element 1072736
Element 1073459
Element 1074499
Element 1075611
Element 1076310
Element 1077111
Element 1078640
Element 1079295
Element 1080194
Element 1081622
Element 1082818
Element 1083880
Element 1084790
Element 1085733
Element 1086622
Element 1087103
Element 1088238
Element 1089463
Element 1090711
Element 1091713
Element 1092654
Element 109351
Element 1094841
Element 1095575
Element 1096311
Element 1097124
Element 1098413
Element 1099321
Element 1100954
Element 1101259
Element 1102801
Element 1103397
Element 1104755
Element 1105827
Element 1106995
Element 1107633
Element 1108847
Element 1109495
Element 1110609
Element 111122
Element 111219
Element 1113541
Element 1114924
Element 1115637
Element 1116529
Element 1117350
Element 1118949
Element 1119292
Element 1120104
Element 1121681
Element 1122670
Element 1123948
Element 1124683
Element 1125575
Element 1126804
Element 1127582
Element 1128369
Element 1129344
Element 1130367
Element 1131728
Element 1132154
Element 11339
Element 1134782
Element 1135940
Element 1136954
Element 1137593
Element 1138880
Element 1139338
Element 1140580
Element 1141888
Element 1142505
Element 1143552
Element 1144998
Element 1145777
Element 1146143
Element 1147192
Element 1148922
Element 1149287
Element 1150947
Element 1151314
Element 1152700
Element 1153266
Element 1154805
Element 1155317
Element 1156588
Element 115729
Element 1158944
Element 1159561
Element 116094
Element 1161368
Element 1162168
Element 1163867
Element 1164262
Element 1165924
Element 1166247
Element 1167347
Element 1168590
Element 1169151
Element 1170714
Element 1171957
Element 1172814
Element 1173358
Element 1174564
Element 1175926
Element 1176715
Element 1177364
Element 1178960
Element 1179849
Element 1180803
Element 1181311
Element 1182686
Element 1183485
Element 1184385
Element 1185211
Element 1186492
Element 1187741
Element 1188519
Element 1189245
Element 1190426
Element 1191217
Element 1192771
Element 11934
Element 1194685
Element 1195968
Element 1196446
Element 1197473
Element 1198289
Element 1199157
Element 1200579
Element 1201764
Element 1202461
Element 1203280
Element 1204742
Element 1205439
Element 1206522
Element 1207454
Element 1208145
Element 1209437
Element 121086
Element 1211843
Element 1212235
Element 1213220
Element 121443
Element 1215198
Element 1216497
Element 1217337
Element 121859
Element 1219787
Element 1220890
Element 1221481
Element 1222928
Element 1223111
Element 1224486
Element 1225421
Element 1226701
Element 122717
Element 1228112
Element 1229442
Element 123057
Element 1231380
Element 12321
Element 1233154
Element 1234428
Element 1235676
Element 1236899
Element 1237247
Element 123827
Element 1239794
Element 1240513
Element 1241532
Element 1242911
Element 1243416
Element 1244723
Element 1245207
Element 1246813
Element 1247952
Element 1248570
Element 1249830
Element 1250178
Element 125120
Element 1252335
Element 1253896
Element 1254535
Element 1255452
Element 1256264
Element 1257202
Element 125870
Element 1259236
Element 1260454
Element 1261227
Element 1262864
Element 1263362
Element 1264896
Element 1265631
Element 1266147
Element 1267828
Element 1268965
Element 1269718
Element 127025
Element 127111
Element 1272646
Element 1273266
Element 1274575
Element 1275188
Element 1276535
Element 1277178
Element 1278789
Element 1279999
Element 128035
Element 1281886
Element 1282968
Element 1283627
Element 128439
Element 1285378
Element 128615
Element 1287986
Element 1288451
Element 1289673
Element 1290119
Element 1291503
Element 1292872
Element 1293452
Element 1294201
Element 1295832
Element 1296603
Element 1297450
Element 1298145
Element 1299846
Element 1300216
Element 1301733
Element 1302735
Element 1303447
Element 1304428
Element 1305949
Element 1306577
Element 1307594
Element 1308886
Element 130984
Element 1310585
Element 1311314
Element 1312941
Element 1313462
Element 1314332
Element 131542
Element 1316216
Element 1317861
Element 1318539
Element 131956
Element 1320278
Element 1321253
Element 132243
Element 1323144
Element 1324458
Element 1325524
Element 1326207
Element 1327829
Element 132864
Element 1329989
Element 1330432
Element 1331442
Element 1332154
Element 1333829
Element 1334569
Element 1335278
Element 1336846
Element 1337177
Element 1338871
Element 133965
Element 13402
Element 1341237
Element 1342578
Element 1343901
Element 1344765
Element 1345594
Element 1346730
Element 1347715
Element 1348925
Element 1349901
Element 1350992
Element 1351150
Element 1352753
Element 1353339
Element 1354256
Element 135598
Element 1356795
Element 1357105
Element 1358890
Element 1359768
Element 1360934
Element 1361374
Element 13624
Element 1363466
Element 136478
Element 1365496
Element 1366187
Element 1367177
Element 1368586
Element 1369373
Element 1370462
Element 1371985
Element 137249
Element 1373711
Element 1374733
Element 1375402
Element 1376512
Element 1377603
Element 1378798
Element 1379454
Element 1380313
Element 1381783
Element 1382167
Element 1383183
Element 138435
Element 1385237
Element 1386333
Element 1387892
Element 1388755
Element 1389404
Element 1390998
Element 1391457
Element 1392227
Element 139335
Element 1394686
Element 1395461
Element 1396973
Element 1397273
Element 139811
Element 1399524
Element 1400513
Element 1401619
Element 1402754
Element 1403545
Element 1404876
Element 1405228
Element 1406423
Element 1407931
Element 1408314
Element 14099
Element 1410609
Element 1411416
Element 1412958
Element 1413919
Element 1414513
Element 1415543
Element 1416803
Element 1417310
Element 1418752
Element 1419931
Element 1420869
Element 1421357
Element 1422699
Element 142319
Element 1424460
Element 1425372
Element 1426645
Element 1427947
Element 1428852
Element 1429592
Element 1430212
Element 1431936
Element 1432715
Element 143321
Element 1434406
Element 1435298
Element 1436946
Element 1437215
Element 1438302
Element 1439811
Element 1440766
Element 1441806
Element 1442990
Element 1443535
Element 1444475
Element 1445834
Element 1446319
Element 144723
Element 1448169
Element 1449181
Element 1450810
Element 1451579
Element 1452284
Element 145351
Element 1454741
Element 1455673
Element 1456755
Element 1457136
Element 145862
Element 145975
Element 1460184
Element 1461835
Element 1462721
Element 1463404
Element 1464685
Element 1465523
Element 1466616
Element 1467555
Element 1468724
Element 1469884
Element 1470927
Element 1471954
Element 1472910
Element 1473938
Element 1474791
Element 1475510
Element 1476540
Element 1477772
Element 1478732
Element 1479131
Element 1480279
Element 1481912
Element 1482417
Element 1483297
Element 1484387
Element 1485411
Element 1486324
Element 1487264
Element 1488919
Element 1489407
Element 1490521
Element 1491699
Element 1492226
Element 1493530
Element 1494212
Element 1495679
Element 149684
Element 1497507
Element 1498652
Element 1499602
Element 1500186
Element 1501679
Element 1502904
Element 1503784
Element 1504544
Element 1505669
Element 1506385
Element 1507569
Element 1508448
Element 1509531
Element 1510446
Element 1511250
Element 151283
Element 1513746
Element 1514388
Element 151560
Element 1516259
Element 1517495
Element 1518788
Element 1519329
Element 1520919
Element 1521423
Element 1522404
Element 1523456
Element 1524107
Element 1525446
Element 1526779
Element 1527293
Element 1528231
Element 1529477
Element 1530306
Element 1531802
Element 1532435
Element 1533642
Element 1534460
Element 1535154
Element 1536728
Element 1537237
Element 1538674
Element 1539118
Element 1540907
Element 1541318
Element 1542453
Element 1543762
Element 1544631
Element 1545345
Element 1546517
Element 154735
Element 154864
Element 154999
Element 1550444
Element 1551417
Element 1552883
Element 1553942
Element 1554801
Element 1555937
Element 1556496
Element 1557778
Element 1558537
Element 1559435
Element 1560632
Element 156141
Element 1562634
Element 1563875
Element 1564993
Element 156572
Element 1566833
Element 1567819
Element 1568831
Element 1569288
Element 1570723
Element 1571416
Element 1572597
Element 1573223
Element 1574353
Element 1575955
Element 1576231
Element 1577358
Element 1578130
Element 1579614
Element 1580954
Element 1581842
Element 1582100
Element 158374
Element 1584558
Element 1585473
Element 1586506
Element 1587222
Element 1588155
Element 1589555
Element 1590163
Element 1591517
Element 1592841
Element 159372
Element 1594896
Element 1595164
Element 1596754
Element 1597866
Element 1598207
Element 1599391
Element 1600556
Element 1601150
Element 160277
Element 1603273
Element 1604180
Element 1605398
Element 1606957
Element 1607599
Element 1608244
Element 1609875
Element 1610724
Element 1611132
Element 1612197
Element 1613689
Element 1614623
Element 1615305
Element 1616663
Element 1617123
Element 1618905
Element 1619484
Element 1620673
Element 1621754
Element 1622971
Element 1623750
Element 1624191
Element 1625549
Element 1626825
Element 1627682
Element 1628869
Element 1629619
Element 1630463
Element 1631213
Element 1632539
Element 1633993
Element 1634956
Element 1635290
Element 1636470
Element 1637204
Element 1638405
Element 1639905
Element 1640386
Element 1641380
Element 1642395
Element 1643235
Element 1644888
Element 164555
Element 1646112
Element 1647943
Element 1648543
Element 1649857
Element 1650686
Element 1651631
Element 1652864
Element 1653566
Element 1654227
Element 1655870
Element 1656595
Element 16573
Element 1658555
Element 1659166
Element 166041
Element 1661579
Element 1662402
Element 1663554
Element 166496
Element 1665776
Element 1666119
Element 1667382
Element 1668767
Element 1669722
Element 1670205
Element 16718
Element 1672464
Element 1673546
Element 1674573
Element 1675915
Element 1676842
Element 1677248
Element 1678637
Element 1679264
Element 1680933
Element 1681375
Element 1682343
Element 1683169
Element 1684224
Element 1685671
Element 1686549
Element 1687385
Element 1688478
Element 1689668
Element 1690365
Element 16917
Element 1692762
Element 1693306
Element 1694378
Element 169511
Element 1696771
Element 1697908
Element 1698543
Element 1699297
Element 17006
Element 1701385
Element 1702295
Element 1703874
Element 1704660
Element 1705647
Element 170682
Element 1707781
Element 1708272
Element 1709566
Element 1710421
Element 1711181
Element 1712962
Element 1713448
Element 1714337
Element 1715573
Element 1716234
Element 1717931
Element 1718601
Element 1719226
Element 1720137
Element 1721911
Element 172244
Element 1723919
Element 1724257
Element 1725119
Element 1726797
Element 1727515
Element 1728954
Element 1729258
Element 1730839
Element 1731147
Element 1732298
Element 1733982
Element 1734111
Element 1735788
Element 1736135
Element 1737849
Element 1738897
Element 173978
Element 1740294
Element 1741303
Element 1742503
Element 1743412
Element 174482
Element 1745958
Element 1746407
Element 1747274
Element 1748716
Element 1749620
Element 1750447
Element 1751541
Element 1752216
Element 1753472
Element 175430
Element 1755763
Element 1756343
Element 175793
Element 1758920
Element 1759337
Element 1760689
Element 1761295
Element 1762941
Element 1763473
Element 1764954
Element 1765898
Element 1766134
Element 1767444
Element 1768736
Element 1769710
Element 1770926
Element 1771292
Element 1772673
Element 1773545
Element 1774626
Element 1775643
Element 1776587
Element 1777759
Element 1778767
Element 177940
Element 1780282
Element 178196
Element 1782195
Element 1783424
Element 1784904
Element 1785118
Element 1786890
Element 1787971
Element 1788491
Element 1789472
Element 1790897
Element 179157
Element 179233
Element 1793125
Element 1794928
Element 1795947
Element 1796883
Element 1797619
Element 1798964
Element 1799661
Element 1800602
Element 1801353
Element 1802747
Element 1803684
Element 1804340
Element 1805655
Element 1806815
Element 1807229
Element 1808504
Element 1809330
Element 1810979
Element 1811853
Element 1812732
Element 1813894
Element 1814829
Element 1815181
Element 1816977
Element 1817348
Element 181846
Element 1819115
Element 1820274
Element 1821442
Element 1822678
Element 1823117
Element 1824126
Element 1825371
Element 1826588
Element 1827498
Element 1828741
Element 182959
Element 1830396
Element 1831286
Element 1832846
Element 1833535
Element 1834847
Element 1835311
Element 1836204
Element 1837553
Element 1838367
Element 1839782
Element 1840662
Element 1841482
Element 1842571
Element 1843758
Element 1844624
Element 184519
Element 1846321
Element 1847142
Element 1848959
Element 1849816
Element 1850281
Element 1851355
Element 1852471
Element 185391
Element 1854666
Element 1855230
Element 1856892
Element 1857623
Element 1858617
Element 1859874
Element 1860529
Element 1861530
Element 1862291
Element 1863138
Element 1864436
Element 1865279
Element 1866956
Element 1867744
Element 1868654
Element 1869419
Element 1870920
Element 1871852
Element 187227
Element 1873158
Element 1874705
Element 187532
Element 187611
Element 1877415
Element 1878119
Element 1879574
Element 1880834
Element 1881296
Element 188288
Element 1883839
Element 1884418
Element 1885516
Element 188648
Element 1887637
Element 1888318
Element 1889757
Element 1890467
Element 1891611
Element 1892282
Element 1893570
Element 1894660
Element 1895381
Element 1896100
Element 18972
Element 189815
Element 1899557
Element 1900415
Element 1901144
Element 1902388
Element 1903673
Element 1904110
Element 1905581
Element 1906247
Element 1907805
Element 1908691
Element 1909827
Element 1910901
Element 1911443
Element 1912724
Element 19130
Element 1914862
Element 1915510
Element 1916533
Element 1917396
Element 191887
Element 1919214
Element 1920465
Element 1921249
Element 1922637
Element 1923607
Element 1924348
Element 1925633
Element 1926460
Element 1927640
Element 1928917
Element 1929117
Element 193068
Element 1931503
Element 1932324
Element 1933725
Element 1934225
Element 193521
Element 1936838
Element 1937868
Element 1938265
Element 1939345
Element 1940197
Element 1941366
Element 1942432
Element 1943949
Element 194436
Element 1945768
Element 1946700
Element 1947496
Element 194880
Element 1949608
Element 1950103
Element 1951659
Element 1952316
Element 1953419
Element 1954147
Element 1955192
Element 1956576
Element 1957643
Element 1958563
Element 1959373
Element 1960836
Element 1961214
Element 1962613
Element 1963895
Element 1964903
Element 1965688
Element 1966382
Element 1967832
Element 196894
Element 1969766
Element 1970556
Element 1971651
Element 1972674
Element 1973390
Element 1974140
Element 1975361
Element 1976778
Element 1977530
Element 1978114
Element 1979517
Element 1980621
Element 1981479
Element 1982937
Element 1983278
Element 1984229
Element 1985735
Element 1986435
Element 1987717
Element 1988260
Element 1989267
Element 1990320
Element 1991485
Element 1992939
Element 1993584
Element 1994331
Element 1995361
Element 1996635
Element 1997992
Element 199861
Element 1999142
Element 200064
Element 2001405
Element 200286
Element 2003990
Element 2004133
Element 2005116
Element 2006394
Element 2007370
Element 2008255
Element 2009296
Element 2010608
Element 20119
Element 2012659
Element 2013783
Element 2014955
Element 2015947
Element 2016709
Element 2017914
Element 2018460
Element 2019830
Element 2020206
Element 2021577
Element 2022177
Element 2023580
Element 2024328
Element 2025424
Element 202612
Element 2027355
Element 2028774
Element 202921
Element 2030773
Element 2031153
Element 2032380
Element 2033740
Element 2034684
Element 2035971
Element 2036607
Element 2037556
Element 2038878
Element 2039350
Element 2040496
Element 2041951
Element 204263
Element 2043725
Element 2044842
Element 2045833
Element 2046140
Element 2047106
Element 2048488
Element 2049291
Element 2050858
Element 2051451
Element 2052272
Element 2053908
Element 2054990
Element 2055162
Element 2056924
Element 2057320
Element 2058128
Element 2059623
Element 2060549
Element 2061756
Element 2062433
Element 2063251
Element 2064584
Element 2065414
Element 206622
Element 2067269
Element 2068433
Element 2069642
Element 2070107
Element 2071964
Element 2072268
Element 2073238
Element 207464
Element 2075661
Element 2076299
Element 2077496
Element 2078660
Element 207945
Element 2080264
Element 2081195
Element 2082134
Element 2083877
Element 2084691
Element 2085593
Element 2086739
Element 2087303
Element 208895
Element 2089409
Element 2090580
Element 2091602
Element 2092110
Element 2093735
Element 2094384
Element 209580
Element 2096160
Element 2097223
Element 2098953
Element 2099629
Element 2100530
Element 2101793
Element 2102864
Element 2103142
Element 2104585
Element 2105307
Element 2106614
Element 2107842
Element 2108791
Element 2109353
Element 2110158
Element 2111955
Element 2112433
Element 21133
Element 2114461
Element 2115533
Element 2116754
Element 2117854
Element 2118733
Element 2119653
Element 2120277
Element 2121758
Element 2122869
Element 2123949
Element 212497
Element 2125922
Element 2126778
Element 2127421
Element 2128777
Element 2129168
Element 2130355
Element 2131882
Element 2132750
Element 2133770
Element 2134354
Element 2135417
Element 2136792
Element 2137913
Element 2138690
Element 2139547
Element 2140573
Element 2141486
Element 2142246
Element 214348
Element 2144891
Element 2145646
Element 2146780
Element 2147340
Element 2148643
Element 214921
Element 215023
Element 2151481
Element 2152799
Element 2153377
Element 2154247
Element 2155133
Element 2156156
Element 2157689
Element 2158825
Element 2159678
Element 2160290
Element 2161161
Element 216288
Element 2163786
Element 2164519
Element 2165592
Element 2166462
Element 2167182
Element 2168473
Element 2169681
Element 217019
Element 2171950
Element 2172340
Element 2173812
Element 2174959
Element 2175416
Element 2176126
Element 2177383
Element 2178372
Element 2179235
Element 2180997
Element 2181888
Element 2182848
Element 2183936
Element 2184713
Element 2185822
Element 2186860
Element 2187659
Element 2188624
Element 2189424
Element 2190977
Element 2191275
Element 2192453
Element 2193801
Element 219492
Element 2195245
Element 2196907
Element 2197361
Element 2198579
Element 2199379
Element 2200564
Element 2201266
Element 220210
Element 2203363
Element 220452
Element 2205590
Element 2206351
Element 2207778
Element 2208383
Element 2209867
Element 2210382
Element 2211588
Element 2212932
Element 2213316
Element 2214265
Element 221594
Element 2216460
Element 2217200
Element 2218720
Element 2219318
Element 2220486
Element 222167
Element 2222266
Element 2223684
Element 2224576
Element 222515
Element 222695
Element 2227395
Element 2228643
Element 2229304
Element 2230369
Element 2231585
Element 2232748
Element 2233484
Element 2234449
Element 2235429
Element 223678
Element 2237365
Element 2238198
Element 2239617
Element 2240666
Element 2241132
Element 2242698
Element 2243203
Element 2244478
Element 2245421
Element 2246779
Element 2247141
Element 2248626
Element 2249258
Element 2250984
Element 2251266
Element 2252657
Element 2253296
Element 2254908
Element 2255176
Element 2256634
Element 225710
Element 2258574
Element 2259871
Element 22604
Element 2261211
Element 2262391
Element 2263914
Element 2264485
Element 2265813
Element 2266936
Element 2267177
Element 226875
Element 2269349
Element 2270174
Element 227162
Element 227287
Element 2273388
Element 2274700
Element 227554
Element 2276942
Element 2277377
Element 2278690
Element 2279628
Element 2280329
Element 2281923
Element 2282336
Element 228382
Element 2284966
Element 2285285
Element 2286402
Element 2287918
Element 2288343
Element 22891
Element 2290860
Element 2291311
Element 2292586
Element 2293182
Element 2294839
Element 2295864
Element 2296735
Element 2297109
Element 2298556
Element 229960
Element 2300986
Element 2301672
Element 2302355
Element 2303867
Element 2304288
Element 2305117
Element 2306787
Element 230770
Element 2308678
Element 2309819
Element 2310288
Element 2311478
Element 2312131
Element 2313677
Element 2314803
Element 2315143
Element 2316293
Element 2317470
Element 2318380
Element 2319531
Element 2320954
Element 2321732
Element 2322732
Element 2323822
Element 2324567
Element 232547
Element 2326226
Element 2327709
Element 2328635
Element 2329517
Element 2330916
Element 2331893
Element 2332556
Element 2333514
Element 2334221
Element 2335337
Element 2336761
Element 2337524
Element 2338846
Element 2339936
Element 234025
Element 2341536
Element 2342121
Element 2343950
Element 2344804
Element 2345988
Element 2346794
Element 2347411
Element 2348432
Element 2349584
Element 2350335
Element 2351404
Element 2352647
Element 2353735
Element 2354394
Element 235564
Element 2356251
Element 2357142
Element 2358480
Element 235956
Element 236076
Element 236114
Element 2362640
Element 2363877
Element 236445
Element 2365493
Element 2366506
Element 2367801
Element 2368815
Element 236932
Element 2370805
Element 2371101
Element 2372447
Element 2373887
Element 2374507
Element 2375510
Element 2376765
Element 2377543
Element 2378321
Element 23796
Element 2380678
Element 2381897
Element 2382273
Element 2383366
Element 2384263
Element 2385206
Element 2386487
Element 2387665
Element 2388121
Element 238998
Element 2390118
Element 2391300
Element 2392536
Element 2393626
Element 2394972
Element 2395912
Element 2396491
Element 2397498
Element 2398291
Element 2399877
Element 2400475
Element 2401602
Element 2402617
Element 2403153
Element 2404329
Element 2405379
Element 2406705
Element 2407545
Element 2408656
Element 2409155
Element 2410987
Element 2411235
Element 2412498
Element 2413221
Element 2414911
Element 2415606
Element 2416908
Element 2417135
Element 2418867
Element 2419311
Element 242065
Element 2421819
Element 2422935
Element 2423277
Element 2424629
Element 2425948
Element 2426579
Element 2427406
Element 2428871
Element 2429320
Element 243028
Element 2431614
Element 2432439
Element 2433313
Element 2434114
Element 2435547
Element 2436274
Element 2437880
Element 2438508
Element 2439781
Element 2440794
Element 2441407
Element 2442974
Element 2443190
Element 2444898
Element 2445726
Element 244638
Element 244757
Element 2448750
Element 2449489
Element 2450250
Element 2451151
Element 2452124
Element 245346
Element 2454776
Element 2455156
Element 2456195
Element 2457508
Element 2458569
Element 2459829
Element 2460985
Element 2461605
Element 2462196
Element 2463370
Element 2464566
Element 2465480
Element 2466607
Element 24679
Element 2468194
Element 2469226
Element 2470601
Element 2471883
Element 2472808
Element 2473269
Element 2474372
Element 2475411
Element 2476274
Element 247761
Element 2478663
Element 2479714
Element 2480958
Element 2481233
Element 2482145
Element 2483307
Element 2484524
Element 2485411
Element 2486180
Element 2487564
Element 2488675
Element 2489824
Element 2490568
Element 2491565
Element 2492903
Element 2493121
Element 2494199
Element 2495639
Element 2496981
Element 2497313
Element 2498181
Element 2499194
Element 2500368
Element 250168
Element 250254
Element 2503439
Element 2504275
Element 2505555
Element 2506272
Element 2507168
Element 2508422
Element 2509644
Element 2510874
Element 2511276
Element 2512582
Element 2513291
Element 2514619
Element 2515256
Element 2516295
Element 2517536
Element 2518708
Element 2519112
Element 2520481
Element 2521888
Element 2522129
Element 2523742
Element 2524472
Element 252557
Element 2526971
Element 2527510
Element 2528850
Element 2529501
Element 2530294
Element 2531866
Element 2532120
Element 253376
Element 2534612
Element 2535755
Element 2536101
Element 2537378
Element 2538561
Element 253913
Element 2540250
Element 2541973
Element 2542293
Element 2543353
Element 2544542
Element 2545947
Element 2546118
Element 2547380
Element 2548630
Element 2549663
Element 2550746
Element 2551513
Element 2552571
Element 2553752
Element 255432
Element 255594
Element 2556403
Element 2557913
Element 255841
Element 2559319
Element 2560870
Element 2561966
Element 2562601
Element 2563619
Element 2564596
Element 2565808
Element 2566427
Element 2567469
Element 2568599
Element 2569800
Element 2570288
Element 2571693
Element 2572533
Element 257320
Element 2574577
Element 2575659
Element 2576978
Element 2577841
Element 2578123
Element 2579542
Element 2580687
Element 2581932
Element 2582220
Element 2583866
Element 2584823
Element 2585217
Element 2586799
Element 2587982
Element 2588124
Element 2589888
Element 259063
Element 2591938
Element 2592892
Element 2593646
Element 2594139
Element 2595825
Element 2596262
Element 2597258
Element 2598529
Element 2599913
Element 2600581
Element 2601643
Element 2602742
Element 2603960
Element 2604201
Element 2605729
Element 2606662
Element 2607342
Element 2608302
Element 2609129
Element 2610626
Element 2611350
Element 2612894
Element 261389
Element 2614993
Element 2615209
Element 2616503
Element 2617698
Element 2618441
Element 2619480
Element 262084
Element 2621790
Element 2622616
Element 2623501
Element 2624279
Element 2625792
Element 2626596
Element 2627863
Element 2628185
Element 2629225
Element 2630972
Element 2631871
Element 2632533
Element 2633571
Element 26345
Element 2635547
Element 2636131
Element 2637443
Element 2638300
Element 2639238
Element 2640798
Element 2641398
Element 2642973
Element 2643464
Element 2644156
Element 264520
Element 264650
Element 2647616
Element 2648560
Element 2649183
Element 2650475
Element 2651726
Element 2652212
Element 2653854
Element 265422
Element 2655841
Element 2656998
Element 2657617
Element 265860
Element 2659263
Element 2660742
Element 2661819
Element 2662483
Element 2663397
Element 2664608
Element 2665834
Element 2666442
Element 2667892
Element 2668138
Element 2669168
Element 2670204
Element 2671308
Element 2672638
Element 2673213
Element 2674524
Element 2675560
Element 2676107
Element 2677236
Element 2678951
Element 2679410
Element 2680406
Element 2681609
Element 2682468
Element 2683563
Element 2684941
Element 2685924
Element 2686944
Element 2687163
Element 2688333
Element 2689432
Element 2690412
Element 2691729
Element 269235
Element 2693781
Element 2694290
Element 269586
Element 2696260
Element 2697660
Element 2698304
Element 2699244
Element 2700705
Element 2701605
Element 270274
Element 2703445
Element 2704532
Element 2705435
Element 2706200
Element 2707491
Element 2708253
Element 2709108
Element 2710527
Element 2711573
Element 2712570
Element 2713289
Element 2714482
Element 271537
Element 2716492
Element 2717333
Element 2718285
Element 2719991
Element 2720554
Element 2721104
Element 2722268
Element 2723608
Element 2724297
Element 272574
Element 2726379
Element 2727656
Element 272861
Element 2729468
Element 2730226
Element 2731565
Element 2732473
Element 2733945
Element 2734745
Element 2735550
Element 2736249
Element 2737499
Element 2738303
Element 273972
Element 2740378
Element 274179
Element 2742248
Element 2743882
Element 2744715
Element 2745971
Element 2746290
Element 2747993
Element 2748702
Element 2749368
Element 2750172
Element 2751416
Element 2752889
Element 2753151
Element 2754901
Element 2755432
Element 275647
Element 2757517
Element 2758922
Element 2759551
Element 2760501
Element 2761147
Element 2762345
Element 2763477
Element 2764610
Element 276597
Element 2766538
Element 2767193
Element 276884
Element 2769868
Element 2770221
Element 2771446
Element 2772441
Element 2773339
Element 2774952
Element 2775172
Element 2776567
Element 2777404
Element 2778736
Element 2779250
Element 2780499
Element 2781551
Element 2782739
Element 2783550
Element 2784560
Element 2785491
Element 2786860
Element 2787801
Element 2788859
Element 2789667
Element 2790774
Element 279161
Element 2792494
Element 2793195
Element 279453
Element 2795457
Element 2796990
Element 2797357
Element 2798451
Element 2799104
Element 280053
Element 2801471
Element 2802144
Element 280355
Element 2804642
Element 2805839
Element 2806305
Element 2807657
Element 280851
Element 2809598
Element 2810794
Element 2811552
Element 2812135
Element 281373
Element 2814519
Element 2815637
Element 2816906
Element 2817631
Element 2818977
Element 2819754
Element 2820562
Element 2821401
Element 2822709
Element 2823498
Element 2824102
Element 2825894
Element 2826166
Element 2827312
Element 2828143
Element 2829183
Element 2830834
Element 2831627
Element 2832436
Element 2833292
Element 2834503
Element 2835711
Element 2836824
Element 2837922
Element 2838435
Element 2839158
Element 2840809
Element 284177
Element 2842510
Element 284373
Element 2844326
Element 2845675
Element 2846819
Element 2847511
Element 2848471
Element 2849586
Element 2850339
Element 2851475
Element 2852568
Element 2853585
Element 2854457
Element 2855190
Element 2856657
Element 2857723
Element 285833
Element 2859251
Element 2860993
Element 2861202
Element 2862115
Element 2863828
Element 2864964
Element 2865384
Element 2866336
Element 2867597
Element 286887
Element 2869555
Element 2870142
Element 2871956
Element 2872583
Element 2873202
Element 2874799
Element 2875705
Element 2876298
Element 2877145
Element 2878362
Element 2879944
Element 2880242
Element 2881643
Element 2882899
Element 2883951
Element 2884620
Element 2885170
Element 2886538
Element 2887834
Element 2888503
Element 2889818
Element 2890317
Element 289116
Element 2892704
Element 2893734
Element 2894954
Element 2895627
Element 2896266
Element 2897563
Element 2898583
Element 2899981
Element 2900962
Element 2901203
Element 2902641
Element 2903334
Element 2904614
Element 2905766
Element 2906846
Element 2907514
Element 2908305
Element 2909120
Element 2910839
Element 2911707
Element 2912945
Element 2913862
Element 2914579
Element 2915758
Element 2916692
Element 2917288
Element 2918300
Element 2919315
Element 2920830
Element 2921857
Element 292275
Element 2923225
Element 2924252
Element 2925423
Element 2926926
Element 2927323
Element 2928913
Element 2929853
Element 293097
Element 2931911
Element 2932492
Element 2933911
Element 293448
Element 2935817
Element 2936684
Element 2937703
Element 2938445
Element 2939501
Element 2940318
Element 2941623
Element 2942920
Element 2943115
Element 2944653
Element 2945552
Element 2946428
Element 2947875
Element 2948274
Element 2949515
Element 2950246
Element 2951160
Element 2952602
Element 2953833
Element 2954433
Element 2955592
Element 2956507
Element 2957942
Element 2958588
Element 2959883
Element 2960243
Element 2961489
Element 2962742
Element 2963345
Element 2964325
Element 2965102
Element 2966150
Element 2967792
Element 2968873
Element 2969125
Element 2970250
Element 2971679
Element 297262
Element 2973806
Element 2974161
Element 2975852
Element 2976160
Element 2977274
Element 297884
Element 2979220
Element 2980941
Element 2981102
Element 2982628
Element 298371
Element 2984142
Element 2985360
Element 2986900
Element 2987452
Element 2988571
Element 298986
Element 2990402
Element 2991461
Element 2992333
Element 2993859
Element 2994768
Element 2995823
Element 2996832
Element 2997592
Element 2998404
Element 2999599
Drücke jeden Button ein paar Mal. Die Zeiten hängen von deinem Rechner ab, der Unterschied bleibt aber konstant.

Bilder

<!-- NgOptimizedImage: standardmäßig lazy, automatisches srcset, Warnungen bei fehlenden Maßen -->
<img ngSrc="/assets/hero.jpg" width="1200" height="600" priority />   <!-- das LCP-Bild -->
<img ngSrc="/assets/avatar.jpg" width="48" height="48" />            <!-- lazy -->
<img ngSrc="product.jpg" fill />                                       <!-- füllt den Container -->

Sehr große Listen

import { ScrollingModule } from '@angular/cdk/scrolling';

@Component({
  imports: [ScrollingModule],
  template: `
    <cdk-virtual-scroll-viewport itemSize="48" class="viewport">
      <div *cdkVirtualFor="let row of rows(); trackBy: trackById" class="row">{{ row.name }}</div>
    </cdk-virtual-scroll-viewport>
  `,
  styles: `.viewport { height: 480px; }`,
})
export class BigList {
  readonly rows = input.required<Row[]>();
  protected trackById = (_: number, r: Row) => r.id;
}

Bundle

// angular.json → configurations.production.budgets
"budgets": [
  { "type": "initial", "maximumWarning": "500kB", "maximumError": "1MB" },
  { "type": "anyComponentStyle", "maximumWarning": "4kB", "maximumError": "8kB" }
]

SSR und Hydration

// app.config.server / app.config.ts mit SSR
provideClientHydration(
  withEventReplay(),          // Klicks während der Hydration gehen nicht verloren
  // withIncrementalHydration() — Standard seit v22
);

Häufige Stolperfallen

  • Optimieren ohne zu messen: Öffne den Profiler in den Angular DevTools, bevor du Code änderst.
  • Teure Methoden im Template (sortedItems() als Methode) → sie laufen bei jedem Rendering. Mach daraus computed.
  • Große Bibliotheken, die „für eine Funktion“ importiert werden (ganz lodash, moment.js) → gezielte Importe oder injectAsync.
  • @defer auf dem Hauptinhalt → schlechterer LCP. Verzögere nur, was unterhalb des sichtbaren Bereichs liegt.

Kap. 11 · 0 von 4 abgeschlossen

Lektion abgeschlossen?

Markiere sie, dann erscheint sie auf deiner Karte: im Inhaltsverzeichnis und auf der Startseite.

Wird automatisch markiert, sobald du die ganze Lektion gelesen hast.

  1. Performance — eine Checkliste
  2. Testen mit Vitest
  3. DevTools: ein Blick in deine App
  4. Angular Aria
Deine ganze Karte ansehen

Alle 75 Seiten · tippen zum Filtern

  • 01Was ist neu in Angular 21 & 22Alle wichtigen Änderungen in v21 und v22 in Kürze, mit Link zur Seite, die sie jeweils erklärt.Start
  • 01Deine erste App, Schritt für SchrittEine Leseliste, von einer leeren Komponente bis zur fertigen App — Signals, @for, Inputs und Outputs, ein Service und ein Formular, Schritt für Schritt.Start
  • 01Schnelle Entscheidungen„Wohin damit?“, „Signal oder Observable?“, „Shared oder Feature?“ — kurze Antworten auf Alltagsfragen.Start
  • 01Angular-Interviewfragen60 echte Interviewfragen für Junior, Mid und Senior, mit der passenden Antwort, der Nachfrage und den Warnsignalen. Dazu ein Probeinterview.Start
  • 02Standalone & BootstrapWie eine App ohne NgModule startet: bootstrapApplication, app.config.ts, imports in der Komponente.Moderne Grundlagen
  • 02Data Binding & EventsInterpolation, Property- und Attribut-Bindings, Events mit $event und Tastenfiltern und wie [( )] aufgebaut ist — was in das DOM geht und was zurückkommt.Moderne Grundlagen
  • 02Control Flow: @if, @for, @switchDie Block-Syntax, die *ngIf/*ngFor/ngSwitch ersetzt, mit track, @empty und Exhaustive Checks.Moderne Grundlagen
  • 02@let und die neuen Template-AusdrückeLokale Variablen mit @let, Arrow Functions, Spread, Regex, instanceof, Kommentare in Tags.Moderne Grundlagen
  • 02@defer — Lazy Loading in TemplatesSchwere Komponenten nur laden, wenn sie gebraucht werden: Trigger, Prefetch, Placeholder, Loading, Error.Moderne Grundlagen
  • 02Class- & Style-BindingsWarum [class.x] und [style.x] ngClass und ngStyle abgelöst haben (mit automatischer Migration ab v21).Moderne Grundlagen
  • 02Komponenten-Styles & Kapselung:host, die drei Kapselungsmodi, Theming mit CSS-Variablen und warum ::ng-deep der letzte Ausweg ist.Moderne Grundlagen
  • 02Pipes: wann und wiePure vs. Impure Pipes, eigene Pipes und wie du zwischen Pipe, computed() und Methode wählst.Moderne Grundlagen
  • 03signal() und computed()Die reaktiven Grundbausteine: beschreibbarer Zustand, abgeleiteter Zustand, Gleichheit, untracked und Regeln zur Immutability.Signals & Reaktivität
  • 03effect() — wann ja, wann neinMit Signals synchronisierte Seiteneffekte: localStorage, Logging, imperative APIs. Und ihre Stolperfallen.Signals & Reaktivität
  • 03linkedSignal() — editierbarer abgeleiteter ZustandEin Signal, das sich zurücksetzt, wenn sich seine Quelle ändert, das du aber auch manuell setzen kannst.Signals & Reaktivität
  • 03resource, rxResource, httpResourceAsynchrone Daten als Signals: status, value, error, reload, automatischer Abbruch. Stabil seit v22.Signals & Reaktivität
  • 03debounced() — verzögerte SignalsDie „Debounce“-Variante eines Signals, ohne RxJS. Perfekt für die Suche.Signals & Reaktivität
  • 03Listen: suchen, filtern, sortieren, blätternEine Kette von computed-Signals, die nur neu berechnet, was sich geändert hat — mit den Filtern in der URL, damit ein Link dieselbe Ansicht öffnet.Signals & Reaktivität
  • 03Observables von null anWas ein Observable ist, subscribe und unsubscribe, die Operatoren, die du jede Woche brauchst, cold vs. hot — und wann ein Signal reicht.Signals & Reaktivität
  • 03Signals ↔ RxJStoSignal, toObservable, takeUntilDestroyed, outputFromObservable — und wann RxJS weiterhin die richtige Wahl bleibt.Signals & Reaktivität
  • 04input() und output()Inputs als Signals (required, transform, alias) und typisierte Outputs. Daten nach unten, Events nach oben.Komponenten: Kommunikation
  • 04model() — Two-Way-BindingBanana-in-a-Box [( )] mit einer einzigen API. Wann du es nutzt und wann input + output besser ist.Komponenten: Kommunikation
  • 04viewChild & contentChildQueries als Signals: viewChild, viewChildren, contentChild, contentChildren, die Option read.Komponenten: Kommunikation
  • 04Lifecycle & DestroyRefWelche Hooks in der Signals-Ära noch zählen, afterNextRender, DestroyRef und typisiertes ngOnChanges.Komponenten: Kommunikation
  • 04Content Projectionng-content mit select, mehrere Slots, Standardinhalt und die Falle der bedingten Projektion.Komponenten: Kommunikation
  • 04ng-template & ngTemplateOutletTemplates als Werte: Render Props in Angular, typisierter Kontext und Anpassen von Komponenten.Komponenten: Kommunikation
  • 05Smart vs. DumbContainer vs. Presentational: wer den Zustand hält, wer nur anzeigt und wie du die beiden sauber trennst.Komponenten-Design
  • 05Generische Komponenten <T>Eine korrekt typisierte DataTable<T> oder Select<T>, mit Templates für Zellen.Komponenten-Design
  • 05Dynamische KomponentenNgComponentOutlet, createComponent mit inputBinding/outputBinding und ein Dashboard, das aus einer Konfiguration gebaut wird.Komponenten-Design
  • 05Direktiven & Host-KompositionAttribut-Direktiven, die host: {}-Metadaten und die Directive Composition API (hostDirectives).Komponenten-Design
  • 05Eigene Formular-ControlsFormValueControl (Signal Forms) vs. ControlValueAccessor: eine Sternebewertung, in beiden Varianten.Komponenten-Design
  • 05Change DetectionOnPush ist ab v22 der Standard, zone.js entfällt ab v21. Was das Rendering auslöst und wie du dir nicht die Finger verbrennst.Komponenten-Design
  • 06inject() & @Service()Der neue @Service()-Decorator ab v22, inject() vs. Konstruktor und der Injection-Kontext.Dependency Injection
  • 06Provider & die Injector-HierarchieRoot vs. Route vs. Komponente, useClass/useValue/useFactory/useExisting und die Modifier optional/self/skipSelf.Dependency Injection
  • 06InjectionToken & provideX()Typisierte Konfiguration, provideFeature()-Funktionen, makeEnvironmentProviders und Initializer.Dependency Injection
  • 06injectAsync() — Lazy ServicesLade einen schweren Service erst, wenn du ihn brauchst, mit Prefetch im Leerlauf.Dependency Injection
  • 07Ordnerstrukturcore / shared / features, was in welchen Ordner gehört und wie ein Feature von innen aussieht.Architektur der Anwendung
  • 07Shared vs. FeatureWann du eine Komponente nach Shared verschiebst und (vor allem) wann NICHT. Eine konkrete Checkliste.Architektur der Anwendung
  • 07Interfaces & ModelleInline-Interface oder eigene Datei? DTO vs. Domänenmodell, type vs. interface, wohin damit.Architektur der Anwendung
  • 07State Management mit SignalsEinfache Signal-Stores, Fassaden, lokaler vs. globaler Zustand und wann du NgRx brauchst.Architektur der Anwendung
  • 07Styleguide & NamensgebungDie aktuellen offiziellen Konventionen: Dateinamen ohne Suffixe, protected, readonly, Reihenfolge der Member.Architektur der Anwendung
  • 07Barrels, Aliase & Grenzenindex.ts, Pfad-Aliase, die öffentliche API eines Features und Abhängigkeitsregeln, die sich automatisch prüfen lassen.Architektur der Anwendung
  • 07Fehler: @boundary & ErrorHandlerDer neue @boundary-Block ab v22.2, der globale ErrorHandler, HTTP-Fehler und Fehler aus resource.Architektur der Anwendung
  • 08Modernes Routing & Lazy LoadingloadComponent, Child Routes, Parameter als Inputs und Parameter-Vererbung (neuer Standard in v22).Routing
  • 08Guards & ResolvercanActivate, canMatch, canDeactivate und resolve als Funktionen, mit Redirects über UrlTree / RedirectCommand.Routing
  • 09Signal Forms — die GrundlagenFormulare auf Basis von Signals: form(), [formField], schemabasierte Validierung. Stabil seit v22.Formulare
  • 09Signal Forms — fortgeschrittenEigene und feldübergreifende Validierung, async/HTTP mit Debounce, dynamische Listen, disabled/hidden, wiederverwendbare Schemas.Formulare
  • 09Typisierte Reactive FormsTypisierte FormGroup, nonNullable, FormArray — und wie sie neben Signal Forms bestehen.Formulare
  • 10HttpClient, Interceptors & die API-SchichtHttpClient ohne Setup (v21), Fetch als Standard (v22), funktionale Interceptors und eine API-Schicht mit DTO-Mapping.HTTP & Daten
  • 11Performance — eine ChecklisteWas wirklich zählt: OnPush + Signals, track, @defer, Lazy Routes, Bilder, Bundles und Hydration.Qualität & Performance
  • 11Testen mit VitestVitest ist ab v21 der Standard-Runner. TestBed, Komponenten mit Signals, Services, HTTP und Harnesses.Qualität & Performance
  • 11DevTools: ein Blick in deine AppChrome DevTools und Angular DevTools Schritt für Schritt: was jedes Panel zeigt, mit Übungen, die auf dieser Website funktionieren.Qualität & Performance
  • 11Angular AriaHeadless, barrierefreie Komponenten, die du nach Belieben stylst: Tabs, Accordion, Menü, Listbox...Qualität & Performance
  • 12SSR, Prerendering & Render ModesWann auf dem Server gerendert wird, wann beim Build und wann nur im Browser: RenderMode pro Route, app.routes.server.ts und die echten Kosten.SSR & Hydration
  • 12Hydration: Event Replay & inkrementellWie der Browser das Server-HTML übernimmt, ohne es neu zu rendern: vollständige Hydration, Event Replay, @defer (hydrate on …) und Mismatch-Fehler.SSR & Hydration
  • 12Servertauglicher Codewindow gibt es auf dem Server nicht: PLATFORM_ID, afterNextRender, DOCUMENT, TransferState, der HTTP-Cache und PendingTasks.SSR & Hydration
  • 13Micro FrontendsWann es sich lohnt, eine App in mehrere Deployments aufzuteilen und wann es nur Komplexität ist: Native Federation, Module Federation, iframes, Web Components.Architektur im großen Maßstab
  • 13Web Components mit Angular ElementscreateCustomElement: eine Angular-Komponente, die überall als HTML-Tag nutzbar ist, plus Kommunikation zwischen Apps über Events und BroadcastChannel.Architektur im großen Maßstab
  • 13Monorepo, Bibliotheken & GrenzenEin Workspace mit mehreren Apps und Bibliotheken: ng generate library, Nx, Secondary Entry Points, Publishing und Abhängigkeitsregeln.Architektur im großen Maßstab
  • 13Hexagonale Architektur (Ports & Adapters)Eine Domäne ohne Angular, Ports als abstrakte Klassen und austauschbare Adapter: HTTP, localStorage oder In-Memory, ohne die UI anzufassen.Architektur im großen Maßstab
  • 14Signals unter der HaubeDer reaktive Graph: Producer und Consumer, Push-Pull, warum computed lazy und glitch-frei ist, das Diamond-Problem und wann Effects laufen.Fortgeschrittene Reaktivität
  • 14Fortgeschrittenes RxJS: Operatoren höherer OrdnungswitchMap, mergeMap, concatMap und exhaustMap an einem Live-Diagramm, dazu Retry mit Backoff, shareReplay und wie du Leaks vermeidest.Fortgeschrittene Reaktivität
  • 14NgRx SignalStoreState Management im großen Stil auf Signals: withState, withComputed, withMethods, rxMethod, Entities und Hooks — und wann ein einfacher Store reicht.Fortgeschrittene Reaktivität
  • 14Zustandsautomaten mit SignalsKeine unmöglichen Zustände mehr: ein typisierter Automat auf Signals, mit Übergängen, Guards und einem Live-Zustandsdiagramm.Fortgeschrittene Reaktivität
  • 15WebSockets: Echtzeit, die das Netz überstehtEin typisierter Socket als Signals: Reconnect mit Backoff und Jitter, Heartbeat, ein Postausgang im Offline-Modus und SSR-Sicherheit.Echtzeit & offline
  • 15Optimistische Updates & RollbackEine sofortige UI, die ehrlich bleibt: Snapshot und Rollback, Antworten in falscher Reihenfolge, Idempotenzschlüssel.Echtzeit & offline
  • 15Offline-first: Service Worker & CachingDer Angular Service Worker: Caching-Strategien, Update-Hinweise und ein Postausgang für Änderungen, die offline entstehen.Echtzeit & offline
  • 16Web WorkersSchwere Berechnungen, ohne die UI zu blockieren: ein echter Worker in der Seite, Message Passing und wann es sich nicht lohnt.Fortgeschrittene UI & Performance
  • 16Riesige Listen: Virtual Scroll100.000 Zeilen ohne Ruckeln: CDK Virtual Scroll, itemSize, trackBy und die Alternativen (Paginierung, Infinite Scroll).Fortgeschrittene UI & Performance
  • 16Moderne Animationen & View Transitionsanimate.enter und animate.leave statt des veralteten @angular/animations, CSS-Transitions und View Transitions bei der Navigation.Fortgeschrittene UI & Performance
  • 16Memory Leaks finden und behebenSubscriptions, Timer und Listener, die ihre Komponente überleben – wie du sie in den DevTools findest und schließt.Fortgeschrittene UI & Performance
  • 17Sicherheit: XSS, Sanitizing & CSPWas Angular automatisch gegen XSS tut, wann bypassSecurityTrust gefährlich wird, dazu CSP mit Nonce, Trusted Types und XSRF.Sicherheit & Globalisierung
  • 17Authentifizierung: Tokens & RefreshEin Interceptor, der das Token anhängt, bei 401 einmal erneuert und die wartenden Requests wiederholt — dazu, wo du das Token aufbewahrst.Sicherheit & Globalisierung
  • 17OAuth 2.1 & OpenID Connect mit PKCEDer Authorization-Code-Flow mit PKCE Schritt für Schritt: Verifier und Challenge, State und Nonce, das ID-Token und warum ein BFF sicherer ist.Sicherheit & Globalisierung
  • 17Internationalisierung (i18n)$localize, das i18n-Attribut, ICU plural/select, ein Build pro Sprache vs. Übersetzungen zur Laufzeit und Formatierung nach Locale.Sicherheit & Globalisierung