我將創建一個簡化的例子來說明我的現實世界問題,所以假設我有一個列出對象的組件。Angular 2模板:定義一個回調
它需要輸入@Input() objects: Object[]
和@Input label: Function
,使得它可以爲每一個都具有label
爲他們每個人的返回值的objects
的輸出標記。
label
應該是一個函數,根據對象創建一個字符串,以便子組件在呈現每個對象的方式上儘可能靈活。 像id + title
或"This is item " + number
或"item " + title + " costs " + cost + "$"
...
一個practial label
可能是e => e.id + ': ' + e.title
其中e
(爲label
的說法是objects
各自的項目)
現在,我想在另一個組件的使用成分B模板A,而不將A的組件類加入label
函數,因爲這會使A的組件類大量混亂。我想在模板中定義label
函數,例如與
<my-selector [objects]="myObjects" [label]="e => e.id + ': ' + e.title"
但無論我嘗試哪種符號,角似乎與像Bindings cannot contain assignments
之類的錯誤,以阻止這個...
問: 這是可能實現,如果沒有,什麼是解決這個問題的最佳途徑?
通過它只是創造一個功能和傳遞功能,而不是'E => e.id +「:」 + E .title' – Maxime
你爲什麼要將函數作爲輸入傳遞給子組件?如上所示,'label'是功能。鼓勵將價值作爲投入。 如果您想要訪問子組件中的某個函數,則始終可以使用該子組件的實例執行此操作。 – koech
我想這樣做,因爲子組件在呈現對象時應該靈活。我相應地更新了這個問題。 – Conic