Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何访问另一个视图及其';通过角形入口在单独屏幕上显示s功能?_Angular_Templates_Containers_Portal - Fatal编程技术网

Angular 如何访问另一个视图及其';通过角形入口在单独屏幕上显示s功能?

Angular 如何访问另一个视图及其';通过角形入口在单独屏幕上显示s功能?,angular,templates,containers,portal,Angular,Templates,Containers,Portal,我有一个有很多组件的角度项目 我使用如下数组循环一个组件: <body-chart *ngFor="..."></body-chart> 人体图表组件中: 全屏 我想在这里展示用上述代码编写的相同画布。。 当用户单击全屏时,它将从同一组件打开此模式。 如何使用该组件的标记()在模态和其他屏幕中显示该组件的视图 有人知道吗?那么请在这里提一下 注: canvas标记由库管理,所以库会自动将一些div和canvas添加到我在dom中放置canva

我有一个有很多组件的角度项目

我使用如下数组循环一个组件:

<body-chart *ngFor="..."></body-chart>

人体图表组件中:

全屏
我想在这里展示用上述代码编写的相同画布。。
当用户单击全屏时,它将从同一组件打开此模式。
如何使用该组件的标记()在模态和其他屏幕中显示该组件的视图

有人知道吗?那么请在这里提一下

注: canvas标记由库管理,所以库会自动将一些div和canvas添加到我在dom中放置canvas标记和呈现动态UI的容器中。它也是互动的

我试着像这样使用ng模板和ng容器,但在ng容器中,我的画布无法与鼠标和其他东西交互

我所尝试的:

全屏
它将呈现我的模板的两个地方。在组件和模态中

但当模板在模态中呈现时,库动态添加的元素不能添加到模态中(非交互式画布)

我认为angular可能会一次性编译html tempalte,而不是在打开modal时编译。这就是为什么动态添加的元素不会在模式中呈现

我发现的另一个概念是角度门户: 我尝试将angular portal与templatePortal和component portal一起使用,但由于一些wierd错误而失败,如:无法从portal.js追加未定义的内容

有没有合适的方法来实现这种情况。
请帮助我。

要在多个位置显示单个内容,您可以利用
ng容器
ng模板

<ng-template #portal>
  <div>content...</div>
</ng-template>

<div class="place1">
  <ng-container *ngIf="!condition" [ngTemplateOutlet]="portal"></ng-container>
</div>

<div class="place2">
  <ng-container *ngIf="condition" [ngTemplateOutlet]="portal"></ng-container>
</div>

感谢您的回复,我尝试了您的解决方案,并且知道ngProjectAs不适用于此场景。
<ng-template #container>
<div>
    <canvas id="canvas"></canvas>
    <button (click)="openModal">Full screen</button>
</div>
</ng-template>
<ng-container *ngTemplateOutlet="container"></ng-container>
<modal>
    <ng-container *ngTemplateOutlet="container"></ng-container>
</modal>
<ng-template #portal>
  <div>content...</div>
</ng-template>

<div class="place1">
  <ng-container *ngIf="!condition" [ngTemplateOutlet]="portal"></ng-container>
</div>

<div class="place2">
  <ng-container *ngIf="condition" [ngTemplateOutlet]="portal"></ng-container>
</div>
<modal>
    <ng-container ngProjectAs="container" *ngTemplateOutlet="container"></ng-container>
</modal>