Angular 没有注入器的角形元件?
我正在试验Angular的自定义元素,并试图避免使用Angular的依赖项注入Angular 没有注入器的角形元件?,angular,typescript,Angular,Typescript,我正在试验Angular的自定义元素,并试图避免使用Angular的依赖项注入 const MyElementElement = createCustomElement(MyElementComponent, { injector }); customElements.define('my-element', MyElementElement); 但是,如果不传入注入器,我无法创建自定义元素 createCustomElement(MyElementComponent) 有没有一种方法可以在
const MyElementElement = createCustomElement(MyElementComponent, { injector });
customElements.define('my-element', MyElementElement);
但是,如果不传入注入器,我无法创建自定义元素
createCustomElement(MyElementComponent)
有没有一种方法可以在不使用Angular的依赖项注入的情况下使用自定义元素?我不确定您的
createCustomElement
函数在做什么,但是如果您试图动态添加组件,这就是您想要遵循的模式
import { Component, ComponentFactoryResolver, OnInit, ViewChild, ViewContainerRef } from '@angular/core';
@Component({
selector: 'app-something',
templateUrl: './something.component.html',
styleUrls: ['./something.component.scss']
})
export class SomethingComponent implements OnInit {
@ViewChild('containerRef', { read: ViewContainerRef }) viewContainerRef: ViewContainerRef;
private readonly _cfResolver: ComponentFactoryResolver;
constructor(_cfr: ComponentFactoryResolver) {
this._cfResolver = _cfr;
}
ngOnInit() {
const componentFactory = this._cfResolver.resolveComponentFactory(MyComponent);
const componentRef = this.viewContainerRef.createComponent(componentFactory);
// Component Ref then has access to all it's properties
// So you can then do things like
// componentRef.instance.myComponentProperty = 'something';
}
}
在HTML中,放置以下标记的位置是如何控制组件插入的位置:
<ng-template #containerRef></ng-template>
基本上,在要进行“动态填充”的组件中,导入ComponentFactoryResolver
,以便创建组件工厂。一旦拥有了该工厂,就可以将其插入到组件中。如果这样做,动态部件中的喷油器将分解。你不必通过任何考试
newmycomponent(…)