請看下面的例子:Angular 2+中依賴注入昂貴嗎?
@Directive({
selector: '[testActiveTab]'
})
export class ActiveTabDirective {
@Input('testActiveTab') active: boolean = true;
constructor(
private parent: TabbedContainerComponent, // <--
private child: TabComponent // <--
) {
}
// ...
}
使用模板:
<test-tabbed-container>
<test-tab>
<!-- ... -->
</test-tab>
<test-tab testActiveTab>
<!-- ... -->
</test-tab>
</test-tabbed-container>
正如你可能已經猜到,這個指令是用來標記選項卡式容器組件內部的活動標籤。
可能的問題,但是,是每一個創建ActiveTabDirective
的一個實例時,噴射器將播種parent
和child
屬性重新,意思,即如果有n
突片在容器中,2 * n
初始化將發生。
問題:
依賴注入在Angular2 +一個昂貴的操作?還是僅僅通過參考,因此便宜?
「如果容器中有n個選項卡,則會發生2 * n個初始化」,但並非總是如此。 DI也是關於生命週期管理的,所以根據配置,只有引用會被傳遞,並且不會創建新的實例 –