2017-02-28 73 views
3

我明白一個申報:Angular 2 - 什麼是可聲明的?

  • 要麼是一個部件,指令或管
  • 可以添加到一個模塊的declarations陣列
  • 屬於一個,且僅一個模塊

但究竟一個可申報的?一個服務類屬於一個模塊,那麼爲什麼服務類不是可聲明的?或者更一般地說,在模塊內部聲明什麼意思?

回答

2

declarations使Angular知道選擇器和管道名稱。
編譯組件模板時,它在當前模塊和導入模塊的聲明中查找匹配的組件,指令和管道,以便將它們應用於選擇器和管道名稱匹配的元素。

2

聲明允許角度編譯器知道哪個模塊實際上將包含組件,指令或管道。

由於編譯器生成製作視圖的工廠,它會將這些組件與它們聲明的模塊進行集成,並且僅在可能使用它們的任何其他模塊中引用它們。

這就是爲什麼您只希望每個組件,管道和指令只能在最多一個模塊中聲明。

服務與其他服務放在一起,並根據需要由其他工具(如webpack)引用,或者在某些情況下由瀏覽器間接引用。角編譯器不需要編譯服務代碼,它只是將它們用作普通的JavaScript代碼。

編輯:指定服務不需要由角編譯器編譯。當然,如果它是打字稿,它仍然會被編譯,但是打字稿編譯器不是有角度的。