после начальной точки :
У нас есть несколько микроуслуг углового интерфейса, и теперь мы хотим объединить их в одном приложении.Мы пробуем подход Angular-Elements и экспортируем одно из микросервисов, которое дало огромный JS-файл.
Проблема
Когда мы включили угловой элемент в проект "собрать его вместе", просто тег "router-outlet" находится в домене, ноhtml не отображается.
Код
Пользовательский элемент:
app.module.ts:
import {NgModule, Injector} from '@angular/core';
import {AppRoutingModule} from './app-routing.module';
import {AppComponent} from './app.component';
import {PhoneModule} from "./features/phone/phone.module";
import {createCustomElement} from '@angular/elements';
import {Router} from '@angular/router';
@NgModule({
declarations: [
AppComponent,
],
imports: [
AppRoutingModule,
PhoneModule,
],
entryComponents: [AppComponent],
})
export class AppModule {
constructor(private injector: Injector, private router: Router) {
this.router = router;
}
ngOnInit() {
this.router.initialNavigation();
}
ngDoBootstrap() {
const customElement = createCustomElement(AppComponent, {injector: this.injector});
customElements.define('phone-contracts', customElement);
}
}
app-routing.module.ts:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { PhoneListComponent } from './features/phone/phone-list/phone-list.component';
import {PhoneContractDetailsComponent} from "./features/phone/phone-contract-details/phone-contract-details.component";
const routes: Routes = [
{ path: '', redirectTo: 'phone-list', pathMatch: 'full' },
{ path: '', component: PhoneListComponent,},
{ path: 'phone-list/:id', component: PhoneContractDetailsComponent },
{ path: '**', redirectTo: '/phone-list', pathMatch: 'full'}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
Проект "Собери все вместе": Это от компонента, который должен обрабатывать этот конкретный микро-service
phone-contract.component.html:
<p>
phone-contracts works!
</p>
<phone-contracts>
<app-phone-list>
</app-phone-list>
</phone-contracts>
app.module.ts:
import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core';
import { FormsModule } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { LoginComponent } from './login/login.component';
import { FooComponent } from './foo/foo.component';
import { HttpClientModule } from '@angular/common/http';
import { CookieService } from 'ngx-cookie-service';
import { AppRoutingModule } from './app-routing.module';
import { AppService } from './app.service';
import { PhoneContractsComponent } from './phone-contracts/phone-contracts.component';
import { DeviceListComponent } from './device-list/device-list.component';
@NgModule({
declarations: [
AppComponent,
HomeComponent,
LoginComponent,
FooComponent,
PhoneContractsComponent,
DeviceListComponent
],
imports: [
BrowserModule,
FormsModule,
AppRoutingModule,
HttpClientModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
providers: [CookieService,AppService],
bootstrap: [AppComponent]
})
export class AppModule { }
что может иметь значение?
Мы используем это как наш "строитель": "@ angular-devkit / build-angular: browser",
Мы думаемпроблема в том, что пользовательский элемент не может разрешить маршрутизацию и поэтому просто ничего не показывает, может ли это быть правдой?