рдкрд┐рдЫрд▓реЗ рджрд╕ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдлреНрд░рдВрдЯ-рдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ: рд╢реБрджреНрдз рдПрдЪрдЯреАрдПрдордПрд▓ / рд╕реАрдПрд╕рдПрд╕ рд╕реЗ рдЙрдЪреНрдЪ рдЕрдВрддрдГрдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛, рдкрд╣реБрдВрдЪ, рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдЬреИрд╕реЗ рд╡рд┐рд╖рдпреЛрдВ рдкрд░ред рдЗрди рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдХрд╛рд╕ рдЯреАрдореЛрдВ рдХреЛ рдмреИрдХ-рдПрдВрдб рдФрд░ рдлреНрд░рдВрдЯ-рдПрдВрдб рдЯреАрдореЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдФрд░ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ рдХрдИ рдЯреАрдореЛрдВ рдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдмреЗрд╕ рдкрд░ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдлреИрд╢рдиреЗрдмрд▓ рд╢рдмреНрдж рдорд╛рдЗрдХреНрд░реЛ-рдлреНрд░рдВрдЯреЗрдВрдбреНрд╕ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдмрдврд╝рддреЗ рдлреНрд░рдВрдЯ-рдПрдВрдб рдХреЛрдб рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ред рд╕реАрдорд╛рдВрдд рдХреЛ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдФрд░ рддреИрдирд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХреНрд╖рдорддрд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдЗрдХреНрд░реЛ-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред
рдореИрдВ рдЖрдЧреЗ рдлреЛрд░рдкреНрд▓реЗ рдХреЗ рдмрд┐рдирд╛ рдпрд╣рд╛рдВ рд░реБрдХреВрдВрдЧрд╛, рдЖрдЗрдП рдХреЛрдгреАрдп рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдорд╛рдЗрдХреНрд░реЛ рдлреНрд░рдВрдЯреЗрдВрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВред
рдорд╛рдЗрдХреНрд░реЛ рдлреНрд░рдВрдЯ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдПрдХ рдпрд╛рддреНрд░рд╛ рдмреБрдХрд┐рдВрдЧ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВрдЧреЗред рдЖрдЗрдП CLI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рдХреЛрдгреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВ: рдпрд╛рддреНрд░рд╛-рдмреБрдХрд┐рдВрдЧ рдФрд░ рдЙрдбрд╝рд╛рди-рдмреБрдХрд┐рдВрдЧ ред
рд╣рдореЗрдВ рдХрд╕реНрдЯрдо рдХреЛрдгреАрдп рддрддреНрд╡реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдбрд╝рд╛рди-рдмреБрдХрд┐рдВрдЧ рдХреЗ рдЕрдВрджрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
ng add @angular/elements ng add ngx-build-plus
рдпреЗ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдПрдирдкреАрдПрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред @ рдХреЛрдгреАрдп / рддрддреНрд╡ рдХреЛрдгреАрдп рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдПрдирдЬреАрдПрдХреНрд╕-рдмрд┐рд▓реНрдб-рдкреНрд▓рд╕ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рд╕реАрдПрд▓рдЖрдИ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИред
рдиреЛрдЯ: рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рд░рдЬрд┐рд╕реНрдЯрд░-рддрддреНрд╡ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 1.8.1 рдореЗрдВ /flight-booking/package.json рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред
рд╣рдо рдлреНрд▓рд╛рдЗрдЯ-рдмреБрдХрд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ http-server рдореЙрдбреНрдпреВрд▓ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
npm i -g http-server --save
рдЙрдбрд╝рд╛рди-рдмреБрдХрд┐рдВрдЧ / src / app / рдореЗрдВ рдмреБрдХрд┐рдВрдЧ рдШрдЯрдХ рдмрдирд╛рдПрдВред рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдШрдЯрдХ рдмрджрд▓реЗрдВ:
рдЙрдбрд╝рд╛рди-рдмреБрдХрд┐рдВрдЧ / src / app / рдмреБрдХрд┐рдВрдЧ / рдмреБрдХрд┐рдВрдЧред com
<div style="text-align:center"> <a href="javascript:alert('Welcome to Flight Booking App!!');" style="font-size:25px;">{{ title }}</a> </div>
рдЙрдбрд╝рд╛рди-рдмреБрдХрд┐рдВрдЧ / src / app / рдмреБрдХрд┐рдВрдЧ / рдмреБрдХрд┐рдВрдЧред com
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-flight-booking', templateUrl: './booking.component.html', styleUrls: ['./booking.component.scss'] }) export class BookingComponent implements OnInit { title = 'Flight Booking App'; constructor() { } ngOnInit() { }
рдЪрд▓рд┐рдП рдмреБрдХрд┐рдВрдЧ рдШрдЯрдХ рдХреЛ рдЙрдбрд╝рд╛рди-рдмреБрдХрд┐рдВрдЧ / src / app / app.module.ts рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
import { BrowserModule } from '@angular/platform-browser'; import { NgModule, Injector } from '@angular/core'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { createCustomElement } from '@angular/elements'; import { BookingComponent } from './booking/booking.component'; @NgModule({ declarations: [ AppComponent, BookingComponent ], imports: [ BrowserModule, AppRoutingModule ], providers: [], bootstrap: [], entryComponents: [ BookingComponent ] }) export class AppModule { constructor(private injector: Injector) { } ngDoBootstrap() { const myCustomElement = createCustomElement(BookingComponent, { injector: this.injector }); customElements.define('app-flight-booking', myCustomElement); } }
рдХрд┐рд╕реА рдПрдХрд▓ JS рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ ngx-build-plus рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдлреНрд▓рд╛рдЗрдЯ-рдмреБрдХрд┐рдВрдЧ / рдХреЛрдгреАрдп.рдЬрди рдХреЛ рддреАрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:
"architect": { "build": { "builder": "ngx-build-plus:build", .... "serve": { "builder": "ngx-build-plus:dev-server", ... "test": { "builder": "ngx-build-plus:karma",
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЙрдиреНрдЪ
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
ng build --prod --output-hashing none --single-bundle true
-рдУрдЯрдкреБрдЯ-рд╣реИрд╢рд┐рдВрдЧ (рдХреЛрдИ рдирд╣реАрдВ) рд╣реИрд╢рд┐рдВрдЧ рдлрд╛рдЗрд▓ рдирд╛рдореЛрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
-рд╕рд┐рдВрдЧрд▓-рдмрдВрдбрд▓ (рдЯреНрд░реВ) рд╕рднреА рд╕рдВрдХрд▓рд┐рдд рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рдорд░реНрдЬ рдХрд░ рджреЗрдЧрд╛ ред
рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВред
http-server ./dist/flight-booking -p 8081
рдЗрд╕реА рддрд░рд╣, рдПрдХ рдЕрдиреНрдп рдХрд╕реНрдЯрдо рдЯреНрд░реЗрди-рдмреБрдХрд┐рдВрдЧ рддрддреНрд╡ рдмрдирд╛рдПрдВ рдФрд░ рдкреЛрд░реНрдЯ 8082 рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВред
http-server ./dist/train-booking -p 8082
рдХрд╕реНрдЯрдо рдЖрдЗрдЯрдо рдЖрд╡рд░рдг
рдЖрдЗрдП рдХрд╕реНрдЯрдо рдлреНрд▓рд╛рдЗрдЯ-рдмреБрдХрд┐рдВрдЧ рдФрд░ рдЯреНрд░реЗрди-рдмреБрдХрд┐рдВрдЧ рддрддреНрд╡реЛрдВ рдХреЛ рдмреБрдХрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ /travel-booking/index.html ред
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>TravelBooking</title> <base href="/"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="favicon.ico"> </head> <body> <app-root></app-root> <div style="margin-bottom: 10px;" id="flight-booking-container"><app-flight-booking></app-flight-booking></div> <div id="train-booking-container"><app-train-booking></app-train-booking></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/zone.js/0.9.1/zone.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/2.2.10/custom-elements-es5-adapter.js"></script> <script type="text/javascript" src="http://localhost:8081/main.js"></script> <script type="text/javascript" src="http://localhost:8082/main.js"></script> </body> </html>
рдХреЛрдгреАрдп рдХреЛ Zone.js рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ , рдФрд░ рдХрд╕реНрдЯрдо рддрддреНрд╡-es5-adapter.js рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рд╕реЗ main.js рдХреЛ рднреА рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рддреНрд░рд╛-рдмреБрдХрд┐рдВрдЧ / angular.json рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред
"serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { "browserTarget": "travel-booking:build", "port": 8080 }
...
рдореБрдЦреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рд╢реБрднрд╛рд░рдВрдн
рдПрдирдЬреА рд╕рд░реНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдЕрдВрддрд┐рдо рдЖрд╡реЗрджрди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд▓реЗрдЦ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдЗрдХреНрд░реЛ-рдлреНрд░рдВрдЯреЗрдВрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред