Я хотел бы послать компонент внутри значения компонента, когда у меня есть это:доступа экспортируется компонент в компоненте
@Component({
selector: 'my-component',
templateUrl: 'my.template.html'
})
export class MyComponent {
private myVar: any;
constructor(){
}
myFunction() =>{
}
}
Вне класса я могу просто позвонить:
import { MyComponent } from './my.component';
Но Я хотел бы получить MyComponent
в классе:
myFunction() =>{
this.myVar = **MyComponment**
}
Как получить **MyComponent**
?
Обратите внимание: я не хочу экземпляр, но вам нужен сам класс.
EDIT: Я понимаю, что мой вопрос недостаточно ясен. Вот что мне нужно сделать ... Мне нужно извлечь компонент и воссоздать его где-то еще. В другом компоненте у меня есть следующие:
export class MyOtherComponent {
constructor(private viewContainer: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver){
}
createComponent(myComponent) =>{
var factory = this.componentFactoryResolver.resolveComponentFactory(myComponent);
var compRef = this.viewContainer.createComponent(factory);
container.getElement().append($(compRef.location.nativeElement));
}
}
Так Внутри MyComponent
я хочу быть в состоянии сделать это:
myFunction() =>{
this.myOtherComponent.createComponent(**MyComponent**)
}
Вы можете обратиться к классу компонентов как 'MyComponent' или' this.constructor'. Какую цель должен выполнять 'this.myVar = ** MyComponment **'? Он не пахнет слишком хорошо. – estus
@estus Я знаю, что это не супер чисто, но мне нужно извлечь компонент и воссоздать его где-то еще. Один из вариантов заключается в том, чтобы перечислить весь компонент, где бы я ни хотел его воссоздать, но я бы предпочел избежать и сделать его более гибким, отправив его в качестве аргумента ... это имеет смысл? – ncohen
@estus BTW Я воссоздаю компонент следующим образом: this.componentFactoryResolver.resolveComponentFactory (MyComponent); 'so' this.constructor' дает мне следующую ошибку: 'Не найдена фабрика компонентов для MyComponent' Любая идея, что я мог бы сделать? – ncohen