[英]Arrow function (Lambda function) with Angular 4
我對lambda知之甚少,而且lambda表達式被視為函數。 我們有很多方法可以做到這一點。
這是我對TypeScript
文件的簡單功能
byPan(card1,card2){
return card1.pan == card2.pan;
}
我在HTML文件中使用的
<select [compareWith]="byPan" class="form-control" [(ngModel)]="card">
<option *ngFor="let cardInfo of cards" [ngValue]="cardInfo">{{cardInfo.pan}}</option>
</select>
如果要在lambda中替換此函數,則可以編寫如下。
var myFunc2 = (card1, card2) => { return card1.pan == card2.pan};
所以我的問題是,我可以直接在lambda函數上使用任何lambda函數,例如compareWith
東西嗎?
<select [compareWith]="(card1,card2)=> { return card1.pan == card2.pan}" class="form-control" [(ngModel)]="card">
<option *ngFor="let cardInfo of cards" [ngValue]="cardInfo">{{cardInfo.pan}}</option>
</select>
您不能只在模板中執行箭頭功能。 Angular將只接受可以與component
或directives
綁定的表達式。 所以基本上不,您不能在模板中使用箭頭功能。 最好將其保留為component
的方法。
但是,如果您正在尋找小的表達式,則可以使用shorthand if
,例如:
[compareWith]="card1.pan == card2.pan" // returns bool value
要么
[compareWith]="card1.pan == card2.pan ? 'foo' : 'bar".
無法在模板中定義函數,主要是因為這將導致在JIT編譯模式下進行eval
。 將組件模板用於主要屬於類的事物將導致質量低下的代碼難以維護。
如果已定義函數,則應將其定義為組件類方法。 它可以是常規功能或箭頭功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.