我想你不太明白我們爲什麼需要進口。實質上,模塊允許我們將代碼拆分成不同的文件。假設你在一個文件/模塊如下:現在
class AComp {}
class BComp {
constructor() {
// creates new instance of AComp
new AComp();
}
}
,你可以在這裏看到BComp使用參考到acomp中的類來創建類的實例。然後,我們決定將這些類分成不同的模塊/類:
----------------------------- a-comp.js -----------------------------
class AComp {}
----------------------------- b-comp.js -----------------------------
class BComp {
constructor() {
// creates new instance of AComp
new AComp();
}
}
如果運行b-comp.js
現在的JavaScript引擎將拋出一個錯誤,因爲它會說,還有的b-comp.js
文件/模塊中沒有AComp
類。所以我們需要告訴JS引擎在哪裏尋找AComp
。我們通過導入來實現:
import { AComp } from 'a-comp';
class BComp {
constructor() {
// creates new instance of AComp
new AComp();
}
}
現在一切都會正常工作。
我們何時需要導入組件?當我們不需要?
正如你可以看到,我們有,因爲我們使用b-comp.js
文件/模塊AComp
類引用使用進口。如果我們沒有在BComp
文件/模塊中使用AComp
類參考,則不需要導入AComp
類。
......爲什麼我們不導入子組件到父組件
你可以從教程看,既不AppComponent
類使用HeroDetailComponent
類引用直接在文件/模塊代碼,也HeroDetailComponent
使用AppComponent
類參考。所以不需要導入它們。
如果我們不這樣做,角怎麼知道這是如何工作的 ([hero] =「selectedHero」)? 'hero'是子組件的屬性, 'selectedHero'是父組件的屬性?
因爲這可以從父AppComponent
模板和角度編譯器提供的信息來推斷使用此語法[hero]="selectedHero"
獲得所有所需的信息。