Provides Angular support for Inertia.js; uses the original @inertiajs/core
package.
Disclaimer: This project is a work in progress. This is a 3rd party driver.
git clone git@github.com:hettiger/angular-inertiajs-driver.git
cd angular-inertiajs-driver
composer install
cp .env.example .env
php artisan key:generate
npm -C resources/angular install
npm run ng:dev
php artisan serve
Using
php artisan serve
is not recommended. Consider using Laravel Herd.
This project has been initialized using the Laravel installer and hettiger/laravel-angular-preset.
angular-interiajs-driver // Laravel App Root
├── app
│ ├── …
│ └── Http
│ └── Controllers
│ │ ├── AboutController.php // Inertia.js Page Controller
│ │ └── HomeController.php // Inertia.js Page Controller
├── …
├── public
│ └── angular // Angular build
├── resources
│ ├── angular // Angular App Root ¹
│ │ └── src
│ │ ├── app
│ │ │ ├── inertia // Angular Inertia.js Driver
│ │ │ └── pages // Inertia.js Page Components
│ │ └── …
│ ├── …
│ └── views
│ ├── …
│ └── generated
│ └── angular.blade.php // Angular Laravel View ¹
├── routes
│ ├── …
│ └── web.php // Inertia.js Page Routes
└── …
¹ The Angular index.html
file has been modified to include the @inertiaHead
and @inertia
directives.
Changes made by hettiger/laravel-angular-preset keep the
angular.blade.php
view in sync. (It's a slightly modified version of index.html
that uses e.g. the Laravel
asset()
helper…)
Create dedicated page components using ng g c pages/name
as you normally would.
You need to cd into the
resources/angular
directory before trying to runng
commands.
Add the InertiaPage
decorator:
@InertiaPage('home')
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent {
// …
}
The string value that you pass to the
InertiaPage
decorator corresponds to theInertia::render('home', [/* … */]);
call in your Inertia.js Page Controllers.
Register your page components:
// resources/angular/src/app/pages/index.ts
export const PAGES: InertiaPageComponent[] = [
HomeComponent,
// …
];
Add a Laravel route and an Inertia.js Page Controller to routes/web.php
:
Route::get('/', \App\Http\Controllers\HomeController::class);
- Support all Inertia.js features
- Release the driver as a standalone NPM package that can be installed into an existing Angular application
There's absolutely no requirement to use hettiger/laravel-angular-preset or to build a monorepo in general.
The Angular Inertia.js Driver is open-sourced software licensed under the MIT license.