Вы можете использовать ComponentFactoryResolver
для динамической загрузки данных. Для этого вы можете зарегистрировать обработчик событий для afterExpand
из панели расширения . Необходимо внести следующие изменения.
Шаблон
<mat-expansion-panel (afterExpand)="expand()">
<mat-expansion-panel-header>
Header
</mat-expansion-panel-header>
<!--where component will be loaded-->
<ng-template component></ng-template>
</mat-expansion-panel>
Файл TS
@ViewChild(Component, {static: true}) component: Component;
constructor(private componentFactoryResolver: ComponentFactoryResolver) { }
expand(){//method to load component when panel is expanded
const componentFactory =
this.componentFactoryResolver.resolveComponentFactory(Component);
const viewContainerRef = this.component.viewContainerRef;
viewContainerRef.clear();
const componentRef = viewContainerRef.createComponent(componentFactory);
// here you can send data to dynamically loaded component
(<Component>componentRef.instance).data = component.data;
}
Перед передачей данных в компонента, вы можете получить новый ответ.