私はの線に沿って何かを行うことができます。そのDOM 要素の子として角度成分をレンダリングし、身体に にそれを追加し、DOM要素を作成しますか?
はい、できます。ポップアップコンポーネントを動的に作成し、作成するときにDOM要素を渡す必要があります。また、結果のビューをApplicationRef.viewsに添付する必要があります。このアプローチは、@angular/material CDK is usingと似ています。読み
import { Component, ComponentFactoryResolver, Injector, Inject, Renderer2, ApplicationRef } from '@angular/core';
import { PopupComponent } from './popup.component';
import { DOCUMENT } from '@angular/platform-browser';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular 4';
constructor(
resolver: ComponentFactoryResolver,
injector: Injector,
@Inject(DOCUMENT) document,
renderer: Renderer2,
appRef: ApplicationRef) {
setTimeout(()=>{
const element = renderer.createElement('div');
renderer.appendChild(document.body, element);
const factory = resolver.resolveComponentFactory(PopupComponent);
const compRef = factory.create(injector, [], element);
appRef.attachView(compRef.hostView);
})
}
}
が動的コンポーネントについて詳しく知ることができます:
ここ
はstackblitz demoとコードです