[[oktatas:web:angular|< Angular]]
====== Angular kezdés ======
* **Szerző:** Sallai András
* Copyright (c) 2021, Sallai András
* Szerkesztve: 2021, 2022, 2023, 2024, 2025
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Új projekt =====
Új projekt készítése:
ng new projekt01
A program két kérdést tesz fel:
* Milyen nyelven írunk stílust.
* Szeretnénk-e szerveroldali renderelést.
Kezdésként csak nyomjunk mindkettőre "Enter" billentyűt.
Ehhez hasonlót kell lássunk:
ng new hello
? Would you like to add Angular routing? (y/N)
? Which stylesheet format would you like to use? (Use arrow keys)
❯ CSS
SCSS [ https://sass-lang.com/documentation/syntax#scss ]
Sass [ https://sass-lang.com/documentation/syntax#the-indented-syntax ]
Less [ http://lesscss.org
CREATE hello/README.md (1063 bytes)
CREATE hello/.editorconfig (274 bytes)
CREATE hello/.gitignore (604 bytes)
CREATE hello/angular.json (3033 bytes)
CREATE hello/package.json (1067 bytes)
...
Ha a projekt elkészült:
Successfully initialized git.
Ha létrejött a projekt, lépjünk be a projekt könyvtárába:
cd projekt01
===== Futtatás =====
A fejlesztői szerver indítása:
ng serve --open
Rövidítés:
ng s -o
Az alkalmazás a következő útvonalon lesz elérhető:
* http://localhost:4200/
===== Struktúra =====
A struktúra nem teljes:
app01/
|-node_modules/
|-public/
`-src/
|-app/
| |-app.components.css
| |-app.component.html
| |-app.component.spec.ts
| |-app.components.ts
| |-app.config.ts
| |-app.routes.ts
| `-assets/
|-index.html
|-main.ts
`-style.css
* app.components.css - Az alkalmazás CSS beállításai
* app.components.html - Az alkalmazás fő nézet oldala
* app.component.spec.ts - Script a teszteléshez
* app.components.ts - Fő script komponens
* app.config.ts - Beállítások
* app.routes.ts - Az útválasztási bejegyzések
* index.html - Az alkalmazás induló HTML állománya
* main.ts - Az alkalmazás belépési pontja
* style.css - Globális stílusbeállítások
===== Állományok =====
==== app-routes.ts ====
A projekt routing helye:
import { Routes } from '@angular/router';
export const routes: Routes = [];
==== app.component állományok ====
Az app.component állományok az alkalmazás fő komponensének állományai.
Ebből üres az app.component.css.
A komponens nézet része .html kiterjesztésű fájl. Ennek tartalma látszik
alapértelmezett weblapként. Tartalma törölhető és újraírandó.
Ebben a fájlban nem szükséges fej és lábrészt írni a HTML oldal számára, mert
az az index.html fájlban van megadva.
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterOutlet } from '@angular/router';
@Component({
selector: 'app-root',
standalone: true,
imports: [CommonModule, RouterOutlet],
templateUrl: './app.component.html',
styleUrl: './app.component.css'
})
export class AppComponent {
title = 'projekt01';
}
Az src/app/app.component.ts fájl az **AppComponent** osztálynak ad otthont.
Egyetlen adattagja van title. Az állomány elején importáljuk a Component dekorátort,
amit az osztály előtt használunk.
A Component dekorátorral mondjuk meg, hogy az AppComponent milyen szelektorral hivatkozható.
A templateUrl megmondja, hogy a HTML sablon állomány neve app.component.html, a styleUrls,
pedig tömb formájában tartalmazhat több stílusfájlt is.
A **src/app/app.component.spec.ts** állomány a komponenshez tartozó automatikusan generált
teszteket tartalmazza.
import { TestBed } from '@angular/core/testing';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [AppComponent],
}).compileComponents();
});
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have the 'projekt01' title`, () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app.title).toEqual('projekt01');
});
it('should render title', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement as HTMLElement;
expect(compiled.querySelector('h1')?.textContent).toContain('Hello, projekt01');
});
});
==== app.config.ts ====
A 17-s verzióban átnevezték az app.module.ts fájl app.config.ts névre, és a tartalma is változott.
Az src/app/app.config.ts állományban regisztráljuk az angular saját moduljait használat előtt.
import { ApplicationConfig } from '@angular/core';
import { provideRouter } from '@angular/router';
import { routes } from './app.routes';
export const appConfig: ApplicationConfig = {
providers: [provideRouter(routes)]
};
Alapértelmezetten be van jegyezve a routes modul. Ha újabb modulokat szeretnénk felvenni, azt itt tehetjük meg. Például a HttpClientModule bejgyzése:
//...
import { HttpClientModule } from '@angular/common/http';
//...
export const appConfig: ApplicationConfig = {
providers: [
provideRouter(routes),
importProvidersFrom(HttpClientModule)
]
};