Я реализую относительно сложный загрузчик компонентов в Angular, и я хотел бы динамически получить экземпляр компонента из хранилища rxjs.
loadEditAreaComponent(component: any, componentInstanceData?: {}){
const componentFactory = this.cfr.resolveComponentFactory(component);
const viewContainerRef = this.editAreaHost.viewContainerRef;
const componentRef = viewContainerRef.createComponent(componentFactory);
Object.keys(componentInstanceData).forEach(key => {
componentRef.instance[key] = componentInstanceData[key];
})
Оно работает. Однако мне кажется, что any
здесь немного небрежен. Я не могу найти правильный тип.
Подпись resolveComponentFactory
- (method) ComponentFactoryResolver.resolveComponentFactory<unknown>(component: Type<unknown>): ComponentFactory<unknown>
.
Когда я говорю component: Type
, я получаю: Argument of type 'Type' is not assignable to parameter of type 'Type<unknown>'.
Когда я говорю component: Type<unknown>
или Type<any>
, я получаю: Type 'Type' is not generic.
Буду признателен за помощь, а также хотел бы получить некоторую информацию об ограничениях Typescript, которые я, вероятно, не понимаю.
Благодарю вас!
Type
? - person yurzui   schedule 12.08.2020