[[oktatas:web:angular|< Angular]]
====== Angular kezdés ======
* **Szerző:** Sallai András
* Copyright (c) 2021, Sallai András
* Szerkesztve: 2021, 2022, 2023, 2024
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Webhely =====
* https://angular.dev/
* https://angular.dev/update-guide
* https://angular.dev/reference/releases
Angular 17 változások:
* https://blog.angular.dev/introducing-angular-v17-4d7033312e4b
===== Telepítés =====
Szükség van egy telepített Node.js-re npm paranccsal együtt. Ha ez megvan, akkor telepíthetjük az Angular parancssori eszközt.
Rendszergazdaként:
npm install -g @angular/cli@17.0.0
Telepítés után kapunk egy "ng" nevű parancsot. Ellenőrizzük a verziót.
Telepített angular/cli verziója:
ng version
ng v
==== Windowson ====
Útvonalba kell tenni:
c:\Users\user\AppData\Romaing\npm
Az útvonalbeállítás Windowson részletesebben:
* [[oktatas:operacios_rendszerek:windows:utvonalak|Útvonalak]]
Ellenőrzés:
ng version
Windowson PowerShellben be kell még állítani:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
===== Adott verzió telepítése =====
npm i -g @angular/cli@16.2.11
npm i -g @angular/cli@16
===== Csomagkezelő beállítása =====
ng config -g cli.packageManager pnpm
A következő helyen tárolódik:
* Windows: %USERPROFILE%\angular-config.json
* Linux: ~/.angular-config.json
A következőt kell találnunk:
{
"cli": {
"packageManager": "pnpm"
}
}
Ettől kezdve az ng parancs a pnpm csomagkezelőt használja.
===== Új projekt =====
Új projekt készítése:
ng new projekt01
A program két kérdést tesz fel:
* Szeretnénk-e routingot.
* Milyen nyelven írunk stílust.
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
===== Kódszerkesztő =====
Ha beléptünk a projekt01 könyvtárba indítsunk kódszerkesztőt.
Visual Studio Code esetén:
code .
===== Futtatás =====
ng serve --open
Az --open helyett használható a -o is használható.
Az alkalmazás a következő útvonalon lesz elérhető:
* http://localhost:4200/
Az első indításnál ha PowerShell terminált használunk, szükség lehet a távoli aláírások engedélyezésére:
set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Ellenőrzés:
Get-ExecutionPolicy -list
===== Struktúra =====
A struktúra nem teljes:
app01/
|-node_modules/
`-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)
]
};
===== Visual Studio Code =====
==== Componizer bővítmény ====
* Componizer
A Componizer számára meg van jelölve függőségként a @componizer/schematics Node.js csomag. Telepítése:
npm install -D @componizer/schematics
A komponensek mozgatása ezek nélkül is lehetséges.
Webhely:
* https://marketplace.visualstudio.com/items?itemName=bilelmsekni.componizer
==== Tesztelés ====
* Karma test explorer for Angular, Jasmine, and Mocha
===== Online =====
JavaScript, Angular, stb:
* https://plnkr.co/
* https://stackblitz.com/