Angular alapok
Az angular alapjaival kerülünk képbe ebben a leírásban. |
|
Angularban componensek az alap építő elemek. Pl egy komponens lehet a login ablak, a felhasználói lista stb. Az app mappába a következő mappaszerkezetet követhetjük: - components - models // adatbázis modell - services // minden lekérdezező, módosító és egyéb üzleti logika Ha nagy projektről beszélünk érdemes lehet modulokra bontani. Angular komponens generálás: # ng g component Test Ilyenkor létrehoz egy Test nevű componens ami a következő fájlokból áll: - test.component.ts // - test.component.spec.ts // teszthez használható - test.component.html // magát a html kódot ide írjuk, a html kódba az angular speciális tag-jeit használhatjuk - test.component.css // css formázás Ami érdekesség egy php-s projekthez képest, ha a view-n található model-ben(objektumban/változóban) valami megváltozik, az a componensben is "látszódni" fog. Nem kell az objektumokat/változókat átadni, ami egyszerűsíti a fejlesztést. Egy komponens példa: import {UsersService} from '../../../services/users.service'; // beimportálhatunk más serviceket, componenseket stb. @Component({ selector: 'app-test', // componens selectorja amivel elérhetjük templateUrl: './test.component.html', // html fájl útvonala styleUrls: ['./test.component.css'] // css fájl útvonala }) export class TestComponent implements OnInit { valtozo1: boolean; // változók, objektumok deklarálása valtozo2: string; constructor() { valtozo2 = 'teszt szöveg'; } ngOnInit() { // a constuctor után fut le } testFunction(){ // valami funkció } ngOnDestroy(){ // amikor megszűnik a componens akkor fut le } View példa: A függvények kerek zárójelben vannak(click), a tulajdonságok szögletes zárójelben[required], a modell-ek pedig szögletes zárójelben levő kerekzárójelben[(ngModel)]. A vezérő szerkezetek pedig csillaggal kezdődnek(*ngIf). Kiíratni egy változó tartalmát pedig dupla kapcsoszárójelben tudjuk megtenni. {{ valtozo2 }} <div *ngIf="valtozo1" (click)=testFunction()>{{ valtozo2 }}</div> <input type="text" [(ngModel)]="valtozo2" [required]="true" />Model példa: export Class User { id: number; username: string; email: string; } Service-ek generálása: # ng g service testA service-ekben @Injectable() jelzéssel jelöljük, hogy injektálható más komponensekben. Az app.component.ts a default komponensünk. Alapból 'app-root' néven tudunk rá hivatkozni. Az gyökérmappában az index.html-ben az angularos alkalmazás default komponensét így "include"-oljuk be: <app-root></app-root> Az app.component.html fájlban pedig a router komponensünket definiáljuk így: <router-outlet></router-outlet> Routolásról a következő fejezetben lesz szó. Ami még kimaradt az app.module.ts amiben a modulokat és komponenseket deklaráljuk az alkalmazásba. Bekell importálnunk a használt modulokat komponenseket. Az @NgModule részben deklarálni is kell a komponensneket amiket írtunk, az imports részben pedig az npm-el telepített modulokat/komponenseket "include"-oljuk. A providers szekcióban pedig a szervice-jeinket "include"-oljuk. Példa: import {BrowserModule} from '@angular/platform-browser'; import {NgModule, APP_INITIALIZER} from '@angular/core'; import {AppRoutingModule, appRoutes} from './app-routing.module'; import {AppComponent} from './app.component'; import {HttpClientModule, HTTP_INTERCEPTORS} from "@angular/common/http"; ... @NgModule({ declarations: [ AppComponent, HomeComponent, ], imports: [ BrowserModule, AppRoutingModule, ... RouterModule.forRoot(appRoutes) ], providers: [MessageService, AuthGuard, { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }, UsersService ], bootstrap: [AppComponent] }) export class AppModule { } Olvasnivaló: https://angular.io/guide/quickstart https://angular.io/cli https://www.youtube.com/watch?v=sld7yLRgsSQ&list=PLPG6oUBPAf3MRS213yRgvwjdlTIQ_msV_ |
2018.10.10. |
Figyelem! Az itt olvasható leírások, nem teljesek és nem biztos, hogy pontosak. Nem
frissülnek folyamatosan, ezért nem mindegyik használható az aktuális verziójú rendszerekben. Mindenki saját
felelősségére használja az itt található ötleteket. Az esetleges károkért nem vállalunk felelősséget.