【发布时间】:2019-10-04 05:51:31
【问题描述】:
我正在尝试将 ng-template 传递给我的指令,如下所示:
component.html
<div myDirective [myTemplate]="myTemplate"></div>
<ng-template #myTemplate><p>Lorem ipsum dolor sit amet.</p></ng-template>
directive.ts
import {Directive, Input} from "@angular/core"
@Directive({
selector: "[myDirective]"
})
export class MyDirective {
@Input() myTemplate
ngOnInit () {
console.log(this.myTemplate.elementRef.nativeElement)
}
}
但它只显示<!-- -->。如何访问模板的内容?其他属性似乎都没有 - this question 上的 cmets 建议改用 templateRef,但它是未定义的。
Stackblitz 如果需要。
为了澄清,该指令的最终目标是有条件地将模板的内容添加到其父元素(以及其他一些更改)。
【问题讨论】:
-
您应该将其用作
*myTemplate而不是[myTemplate],这样结构指令就会收到您想要的内容。如果您尝试在内部使用模板,我建议您使用 @ContentChild 或某种形式。不发布作为答案,因为它不是 -
@FranciscoSantorelli 然后我得到“无法绑定到 'myTemplate',因为它不是 'div' 的已知属性。”而
@ContentChild并没有做我想做的事,我希望模板是可重用的,所以它必须可以从指令外部访问。 -
我不确定你想达到什么目的。您是在尝试获取指令将注入的可重用模板(?),还是尝试将模板传递给指令?
-
@FranciscoSantorelli 该指令的最终目标是有条件地将模板的内容添加到其父元素(以及其他一些更改)。
标签: angular typescript angular2-template angular-directive