我有一个简单的组件,它通过自定义指令中指定延迟后注入数Angular - 指令如何“看”模板和ViewContainer?
我已经知道*
是角脱糖暗示的语法变得像
<ng-template ...>
...actual markup
</ng-template>
我也知道我们可以通过注入组件/模板到viewContainer
:
this.viewContainerRef.createEmbeddedView/Component(this.templateRef);
该指令代码:
个@Directive({
selector: '[appDelay]'
})
export class DelayDirective {
constructor(
private templateRef: TemplateRef<any>,private viewContainerRef: ViewContainerRef
) { }
@Input() set appDelay(time: number): void {
setTimeout(()=>{
this.viewContainerRef.createEmbeddedView(this.templateRef);
}, time);
}
}
的文档指出:
要访问一个元素的ViewContainerRef,您可以放置一个 指令与ViewContainerRef的元素注入,或者你通过ViewChild查询获得 它。
问:
在一般模拟性:什么是templateRef
和viewContainerRef
模板 “字符串值”?
恕我直言去加糖模板会是这样的:
<ng-tempalte ...>
<card *appDelay="500 * item">
{{item}}
</card>
</ng-template>
所以ViewContainerRef
将<ng-tempalte ...>
一个参考,templateRef将在<card >...</card>
参考 - 那是对的吗 ?
(此外,是否有可能console.log()
那些HTML模板,看看实际的标记?
https://plnkr.co/edit/80AGn8bR4CiyH0ceP8ws?p=preview
你可能会发现[本条](https://hackernoon.com/exploring-angular-dom-abstractions-80b3ebcfc02)有用 –