You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor: update Angular tutorial to use simplified component file naming
- Changed component file names from `info-box.component.*` to `info-box.*` for consistency.
- Updated references in the tutorial to reflect the new file naming convention.
- Simplified the `InfoBoxComponent` class by removing unnecessary lifecycle methods.
Die für uns aktuell relevanten Dateien sind zur Zeit die `info-box.component.ts` und unser Template `info-box.component.html`. Schauen wir uns zunächst einmal unsere Klasse an.
325
+
Die für uns aktuell relevanten Dateien sind zur Zeit die `info-box.ts` und unser Template `info-box.html`. Schauen wir uns zunächst einmal unsere Klasse an.
326
326
327
327
```typescript
328
328
@Component({
329
329
selector: 'app-info-box',
330
-
templateUrl: './info-box.component.html',
331
-
styleUrls: ['./info-box.component.scss'],
330
+
templateUrl: './info-box.html',
331
+
styleUrls: ['./info-box.scss'],
332
332
})
333
-
export class InfoBoxComponent implements OnInit {
334
-
constructor() {}
335
-
336
-
ngOnInit() {}
337
-
}
333
+
export class InfoBoxComponent {}
338
334
```
339
335
340
336
Hier sehen wir wie erwartet eine neue Komponente. Unser Selektor hat den automatischen Prefix `app-` bekommen. Somit ist unsere neue Komponente nun unter dem HTML-Tag `<app-info-box></app-info-box>` nutzbar.
341
337
342
338
Komponenten referenzieren ihre Abhängigkeiten direkt in der `AppComponent` über `imports`. Der Einstiegspunkt unserer kompletten Anwendung ist die `AppComponent`.
343
339
344
-
Um unsere frisch generierte Komponente anzuzeigen, müssen wir diese zuerst in der `AppComponent` importieren und dann in dem Template aufrufen. Hierzu gehst du in die Datei `app.component.ts` und fügst den Import hinzu:
340
+
Um unsere frisch generierte Komponente anzuzeigen, müssen wir diese zuerst in der `AppComponent` importieren und dann in dem Template aufrufen. Hierzu gehst du in die Datei `app.ts` und fügst den Import hinzu:
345
341
346
342
```typescript
347
343
import { Component } from '@angular/core';
348
-
import { InfoBoxComponent } from './info-box/info-box.component';
344
+
import { InfoBoxComponent } from './info-box/info-box';
349
345
350
346
@Component({
351
347
selector: 'app-root',
352
348
imports: [InfoBoxComponent], // Hier importieren wir unsere Komponente
353
-
templateUrl: './app.component.html',
354
-
styleUrls: ['./app.component.scss']
349
+
templateUrl: './app.html',
350
+
styleUrls: ['./app.scss']
355
351
})
356
352
export class AppComponent {
357
353
title = 'angular-de-tutorial';
358
354
}
359
355
```
360
356
361
-
Anschließend gehst du in die Datei `app.component.html`, löschst dort den kompletten derzeitigen Inhalt und fügst deine Komponente via HTML-Tag ein.
357
+
Anschließend gehst du in die Datei `app.html`, löschst dort den kompletten derzeitigen Inhalt und fügst deine Komponente via HTML-Tag ein.
362
358
363
359
```html
364
360
<app-info-box></app-info-box>
365
361
```
366
362
367
363
Wenn du nun deine Anwendung wieder im Browser öffnest, solltest du die Ausgabe `info-box works!` sehen.
368
-
Du kannst an dieser Stelle gerne mit deinem Template in `info-box.component.html` etwas herumspielen und auch mehrere dieser Info-Boxen erzeugen, indem du den HTML-Tag in deinem App-Template einfach kopierst.
364
+
Du kannst an dieser Stelle gerne mit deinem Template in `info-box.html` etwas herumspielen und auch mehrere dieser Info-Boxen erzeugen, indem du den HTML-Tag in deinem App-Template einfach kopierst.
369
365
Ein historischer Moment – nimm dir ein paar Sekunden Zeit, um deine erste eigene Komponente zu bewundern. 😉
370
366
371
367
## Expressions und Template Literals
@@ -395,12 +391,8 @@ Führen wir also ein neues Signal `text` ein und füllen dieses mit einem String
395
391
```typescript
396
392
import { signal } from '@angular/core';
397
393
398
-
class InfoBoxComponent implements OnInit {
394
+
class InfoBoxComponent {
399
395
text = signal('Additional Info-Text on our Info Box! 🎊');
400
-
401
-
constructor() {}
402
-
403
-
ngOnInit() {}
404
396
}
405
397
```
406
398
@@ -435,13 +427,9 @@ Hierzu setzen wir statt dem festen Wert den Namen des Signals auf das Binding:
435
427
```typescript
436
428
import { signal } from '@angular/core';
437
429
438
-
class InfoBoxComponent implements OnInit {
430
+
class InfoBoxComponent {
439
431
text = signal('Additional Info-Text on our Info Box! 🎊');
440
432
hidden = signal(true);
441
-
442
-
constructor() {}
443
-
444
-
ngOnInit() {}
445
433
}
446
434
```
447
435
@@ -482,7 +470,7 @@ Hierfür gibt es in Angular die Control-Flow-Syntax `@for`.
482
470
Der Block ist angelehnt an eine For-Schleife, iteriert über eine listenartige Struktur und erzeugt für jedes Element eine Kopie des DOM-Elements, auf das es angewandt wird. Mit `track` gibst du an, wie Angular Einträge eindeutig identifiziert.
483
471
484
472
```html
485
-
<!-- book-list.component.html -->
473
+
<!-- book-list.html -->
486
474
487
475
<ul>
488
476
@for (book of books(); track book.id) {
@@ -503,24 +491,24 @@ Dazu führen wir den command `npx @angular/cli generate component book-list` aus
503
491
Damit die `BookListComponent` im Template nutzbar ist, müssen wir sie in der `AppComponent` in `imports` aufnehmen:
504
492
505
493
```typescript
506
-
// app.component.ts
494
+
// app.ts
507
495
import { Component } from '@angular/core';
508
-
import { InfoBoxComponent } from './info-box/info-box.component';
509
-
import { BookListComponent } from './book-list/book-list.component';
496
+
import { InfoBoxComponent } from './info-box/info-box';
497
+
import { BookListComponent } from './book-list/book-list';
Anschließend fügen wir das Tag `<app-book-list></app-book-list>` in das Template der `app.component.html` ein.
523
-
Wenn wir also in der `BookListComponent` (siehe _book-list.component.ts_) eine Variable `books` mit einer Liste von Büchern definieren, erhalten wir hierfür 3 DOM-Elemente.
510
+
Anschließend fügen wir das Tag `<app-book-list></app-book-list>` in das Template der `app.html` ein.
511
+
Wenn wir also in der `BookListComponent` (siehe _book-list.ts_) eine Variable `books` mit einer Liste von Büchern definieren, erhalten wir hierfür 3 DOM-Elemente.
524
512
525
513
```typescript
526
514
import { signal } from '@angular/core';
@@ -660,11 +648,11 @@ export class BookListComponent {
660
648
```
661
649
662
650
Meist importiert deine IDE den `BookDataService` und `inject` automatisch.
663
-
Sollte dies nicht der Fall sein, kannst du dies selbst vornehmen und folgenden import an den Anfang der `book-list.component.ts` schreiben.
651
+
Sollte dies nicht der Fall sein, kannst du dies selbst vornehmen und folgenden import an den Anfang der `book-list.ts` schreiben.
0 commit comments