Angular2中免不了進(jìn)行父子組件的通信,現(xiàn)在就稍微的了解一下父組件怎么給子組件傳值,首先,通過Angular-cli生成組件,運(yùn)行命令:
ng generate component user-item
生成子組件,然后生成父組件
ng generate component user-list
ok,現(xiàn)在組件以及html模板文件都已經(jīng)生成,然后在user-list.component.ts中寫下如下代碼
在模板文件中如下
<ul>
<li *ngFor='let name of names'>Hello,{{name}}</li>
</ul>
然后在瀏覽器技能顯示
這樣的話,說明初步完成,接下來需要操作子組件user-item.component.ts,如下
@Input()這是一個(gè)裝飾器,這是angular2定義的語法,用于接收父組件傳遞過來的數(shù)據(jù),接下來我們需要更改父組件的模板文件(user-list.component.html),改成這樣
<ul>
<app-user-item *ngFor='let name of names' [name]='name'>Hello,{{name}}</app-user-item>
</ul>
如果頁面顯示效果是這樣的,就說明成功了,
注意, 我們?cè)赼pp-user-item標(biāo)簽上添加了新屬性[name]="name"。
在Angular中, 添加一個(gè)帶方括號(hào)的屬性( 比如[foo]) 意味著把一個(gè)值
傳給該組件上同名的輸入屬性( 比如foo) 。在這個(gè)例子中, name右側(cè)的值來自ngFor中的let name ...語句,[name]部分指定的是UserItemComponent上的Input。也就是說‘’*ngFor='let name of names' 中循環(huán)獲取的name的值,然后作為" [name]='name' "中的‘name’,然后賦值給[name],傳遞給子組件user-item,然后用
@Input() name:string
```來接收
注意, 我們正
在傳入的并不是字符串字面量"name ", 而
是name變量的值, 也就是names中的每個(gè)元素。也就是說
(1)在names中迭代;
(2) 為names中的每個(gè)元素創(chuàng)建一個(gè)新的UserItemComponent;
(3) 把當(dāng)前名字的值傳給UserItemComponent上名叫name的Input屬性
以上是對(duì)Angular2的父子通信的簡(jiǎn)單認(rèn)識(shí),深入了解,敬請(qǐng)關(guān)注后續(xù)更新。