Skip to content

Commit 610bd79

Browse files
committed
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.
1 parent d626ae1 commit 610bd79

File tree

1 file changed

+29
-41
lines changed

1 file changed

+29
-41
lines changed

_posts/2025-06-09-angular-tutorial-deutsch/2025-06-09-angular-tutorial-deutsch.md

Lines changed: 29 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -316,56 +316,52 @@ Ich würde dir also empfehlen, ein zweites Terminal zu öffnen und folgenden Bef
316316
317317
```bash
318318
$ npx @angular/cli generate component info-box
319-
CREATE src/app/info-box/info-box.component.scss (0 bytes)
320-
CREATE src/app/info-box/info-box.component.html (23 bytes)
321-
CREATE src/app/info-box/info-box.component.spec.ts (636 bytes)
322-
CREATE src/app/info-box/info-box.component.ts (277 bytes)
319+
CREATE src/app/info-box/info-box.scss (0 bytes)
320+
CREATE src/app/info-box/info-box.html (23 bytes)
321+
CREATE src/app/info-box/info-box.spec.ts (636 bytes)
322+
CREATE src/app/info-box/info-box.ts (277 bytes)
323323
```
324324
325-
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.
326326
327327
```typescript
328328
@Component({
329329
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'],
332332
})
333-
export class InfoBoxComponent implements OnInit {
334-
constructor() {}
335-
336-
ngOnInit() {}
337-
}
333+
export class InfoBoxComponent {}
338334
```
339335
340336
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.
341337
342338
Komponenten referenzieren ihre Abhängigkeiten direkt in der `AppComponent` über `imports`. Der Einstiegspunkt unserer kompletten Anwendung ist die `AppComponent`.
343339
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:
345341
346342
```typescript
347343
import { Component } from '@angular/core';
348-
import { InfoBoxComponent } from './info-box/info-box.component';
344+
import { InfoBoxComponent } from './info-box/info-box';
349345
350346
@Component({
351347
selector: 'app-root',
352348
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']
355351
})
356352
export class AppComponent {
357353
title = 'angular-de-tutorial';
358354
}
359355
```
360356
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.
362358
363359
```html
364360
<app-info-box></app-info-box>
365361
```
366362
367363
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.
369365
Ein historischer Moment – nimm dir ein paar Sekunden Zeit, um deine erste eigene Komponente zu bewundern. 😉
370366
371367
## Expressions und Template Literals
@@ -395,12 +391,8 @@ Führen wir also ein neues Signal `text` ein und füllen dieses mit einem String
395391
```typescript
396392
import { signal } from '@angular/core';
397393
398-
class InfoBoxComponent implements OnInit {
394+
class InfoBoxComponent {
399395
text = signal('Additional Info-Text on our Info Box! 🎊');
400-
401-
constructor() {}
402-
403-
ngOnInit() {}
404396
}
405397
```
406398
@@ -435,13 +427,9 @@ Hierzu setzen wir statt dem festen Wert den Namen des Signals auf das Binding:
435427
```typescript
436428
import { signal } from '@angular/core';
437429
438-
class InfoBoxComponent implements OnInit {
430+
class InfoBoxComponent {
439431
text = signal('Additional Info-Text on our Info Box! 🎊');
440432
hidden = signal(true);
441-
442-
constructor() {}
443-
444-
ngOnInit() {}
445433
}
446434
```
447435
@@ -482,7 +470,7 @@ Hierfür gibt es in Angular die Control-Flow-Syntax `@for`.
482470
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.
483471
484472
```html
485-
<!-- book-list.component.html -->
473+
<!-- book-list.html -->
486474
487475
<ul>
488476
@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
503491
Damit die `BookListComponent` im Template nutzbar ist, müssen wir sie in der `AppComponent` in `imports` aufnehmen:
504492
505493
```typescript
506-
// app.component.ts
494+
// app.ts
507495
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';
510498
511499
@Component({
512500
selector: 'app-root',
513501
imports: [InfoBoxComponent, BookListComponent], // BookListComponent hinzufügen
514-
templateUrl: './app.component.html',
515-
styleUrls: ['./app.component.scss']
502+
templateUrl: './app.html',
503+
styleUrls: ['./app.scss']
516504
})
517505
export class AppComponent {
518506
title = 'angular-de-tutorial';
519507
}
520508
```
521509
522-
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.
524512
525513
```typescript
526514
import { signal } from '@angular/core';
@@ -660,11 +648,11 @@ export class BookListComponent {
660648
```
661649

662650
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.
664652

665653
```typescript
666654
import { inject } from '@angular/core';
667-
import { BookDataService } from '../book-data.service';
655+
import { BookDataService } from '../book-data';
668656
```
669657

670658
## Daten via REST-API nachladen
@@ -721,7 +709,7 @@ export class BookListComponent {
721709
```
722710

723711
Meist importiert deine IDE den `Observable` automatisch.
724-
Sollte dies nicht der Fall sein, kannst du dies selbst vornehmen und folgenden import an den Anfang der `book-list.component.ts` schreiben.
712+
Sollte dies nicht der Fall sein, kannst du dies selbst vornehmen und folgenden import an den Anfang der `book-list.ts` schreiben.
725713

726714
```typescript
727715
import { Observable } from 'rxjs';
@@ -773,9 +761,9 @@ npx @angular/cli new my-app --test-runner=vitest
773761
### Beispiel-Test mit Vitest
774762

775763
```typescript
776-
// book-list.component.spec.ts
764+
// book-list.spec.ts
777765
import { ComponentFixture, TestBed } from '@angular/core/testing';
778-
import { BookListComponent } from './book-list.component';
766+
import { BookListComponent } from './book-list';
779767

780768
describe('BookListComponent', () => {
781769
let component: BookListComponent;

0 commit comments

Comments
 (0)