簡體   English   中英

Angular 4的箭頭函數(Lambda函數)

[英]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將只接受可以與componentdirectives綁定的表達式。 所以基本上不,您不能在模板中使用箭頭功能。 最好將其保留為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM