首页 > 解决方案 > Angular 6:从模板传递 viewContainerRef

问题描述

我有一个 Angular 6 应用程序;组件方法需要访问viewContainerRef组件模板中任何给定元素的 ,以便将其传递给服务方法。这是我目前正在做的事情。它有效,但我希望更简单:

<div #myDiv></div>
<button (click)="doWork()"></button>

在组件中:

@ViewChild('myDiv', {read: ViewContainerRef}) divView: ViewContainerRef;

doWork() {
  this.service.work(this.divView);
}

所以doWork需要viewContainer. 我希望更简单,就像这样:

<div #myDiv></div>
<button (click)="doWork(???)"></button>

有什么方法可以直接从模板中传入 viewContainerdoWork吗?

标签: angular

解决方案


我认为没有内置的方法。但是,您可以创建一个指令,使 ViewContainerRef 在模板中可用:

import { Directive, ViewContainerRef } from '@angular/core';

@Directive({
  selector: '[viewContainer]',
  exportAs: 'viewContainer'
})
export class ViewContainerDirective {
  constructor(public container: ViewContainerRef) {
  }
}

https://stackblitz.com/edit/angular-oydor5?file=src%2Fapp%2Fapp.component.html


推荐阅读