簡體   English   中英

如何傳遞Angular2組件的格式選項?

[英]How to pass formatting options for Angular2 component?

我有一個非常簡單的組件

@Component({
  selector: "generic-select",
  template: `
 <select [(ngModel)]="target">
  <option *ngIf="target" hidden selected>{{target}}</option>
  <option *ngFor="let c of choices">{{c}}</option>
 </select>
`
}) export class SelectorComponent<T> {

  @Input()
  private choices: T[];

  @Input()
  private target: T;
}

問題是,T並不總是像字符串或數字這樣的原始對象,而是一個復雜的對象。 因此,在這種情況下,我想傳遞一些內容(我並不真正知道),該內容告訴T預覽的外觀。

我想要像

<generic-select [choices]="choices" [target]="user.choice" [formatter]="(t:T) => t.name"></generic-select>

並非完全符合您的要求,但這是該問題的潛在解決方案:

如果使用TypeScript,則可以創建擴展其他類的類 如果可以確定顯示值字段的約定,則可以在公共基類上具有此屬性,然后使用它代替泛型類型。

顯然,要使用基本類型,它們也需要被類包裝。

如果要同時支持原語和自定義類型,另一種方法是在組件上具有兩個可選的輸入屬性,一個用於所有原語(如您現在所擁有),另一個用於公共類類型。 然后,在模板中顯示基於提供的輸入的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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