Ebben a leírásban egy egyszerű Laravel projektet készítünk, ami egy tömböt ad át az Angular alkalmazásnak.
mkdir projekt01
Backend készítése:
cd projekt01 composer create-project laravel/laravel backend ng new frontend
Az útválasztóban generálunk egy egyszerű tömböt, amely teendő azonosítót és teendő nevet tartalmaz. Szerkesszük a routes/api.php fájlt:
Route::get('tasks', function () { return response()->json( [ ['id' => 1, 'name' => 'Angular tanulás'], ['id' => 2, 'name' => 'Laravel tanulás'] ] ); });
A backend ezzel kész.
A szolgáltatásban HttpClientModule-t fogjuk használni, ezért kezdjük ezzel.
Töltsük be a HttpClientModule nevű modult. Ehhez szerkesszük a src/app/app.module.ts fájt. Vegyük fel a következő import sort:
import { HttpClientModule } from '@angular/common/http';
Regisztráljuk a modult:
imports: [ HttpClientModule ],
A frontend oldalon egy szolgáltatást fogunk készíteni, meghívunk egy modult, és az alkalmazás főkomponens-vezérlőosztályát szerkesztjük.
Hozzuk létre a szolgáltatást:
ng generate service task
Létrejön a task.service.ts fájl. Szerkesszük:
import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class TaskService { }
Vegyük használatba a HttpClient modult:
import { HttpClient } from '@angular/common/http';
Egészítsük ki a TaskService osztályt:
//... export class TaskService { host: string = 'http://localhost:8000/api/'; constructor(private http: HttpClient) { } getTasks() { let endpoint: string = 'tasks'; let url = this.host + endpoint; return this.http.get<any>(url); } }
ng generate component task
Vegyük használatba a TaskService osztályt.
Szerkesszük az src/app/task/task.component.ts
állományt.
Elsőként importáljuk:
import { TaskService } from './task.service';
Majd használhatjuk:
//... export class TaskComponent implements OnInit { tasks: any; constructor(private taskService: TaskService) { } ngOnInit(): void { this.getTasks(); } getTasks() { this.taskService.getTasks().subscribe(tasks => { this.tasks = tasks; console.log(this.tasks); }); } }
<table> <tr *ngFor="let task of tasks"> <td>{{ task.id }}</td> <td>{{ task.name }}</td> </tr> </table>
A fő komponensben vegyük fel a task komponenst:
<app-task></app-task>
Indítsuk el a backendet. A backend könyvtáron belül:
php artisan serve
Indítsuk el a frontendet. A frontend könyvtáron belül:
ng server -o
A backend a 8000 porton érhető el. Írjuk be a /api/tasks útvonalat:
localhost:8000/api/tasks
Látnunk kell a tömböt.
A frontend a 4200 porton fut. Írjuk a böngészőbe:
localhost:4200
Az eredményt nézzük meg a böngészőben és annak fejlesztői felületén.
Van, aki a Laravelt és az Angulart jobban „összevarja”: