我有一個簡單的組件,它通過自定義指令中指定延遲後注入數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)有用 –