我正在創建一個組件。由於我喜歡Apache Wicket的做事方式,我試圖模仿傳遞數據的方式。爲此,對於子組件,我傳遞了一個模型和回調函數,它們可以提取相關的值,而不是調用函數來獲取數據。Angular2:如何讓@Input setter按特定順序調用?
問題是,新設置的模型的處理使用回調。 因此,如果在設置回調之前調用模型設置器,則會導致Angular崩潰。
解決方法:將需要回撥的操作推遲到ngAfterViewInit()
等。
簡而言之:
- 我如何控制其中@Inputs設定的順序?
- 我可以依賴源代碼中的順序嗎?
例子:(此處更改順序,似乎做的工作)使用該子組件
@Input()
valueCallback: (item: any) => string
= app => { throw new Error("valueCallback not yet defined."); };
@Input()
labelCallback: (item: ItemType) => string;
模板:(這裏改變的順序不改變順序)
<wu-checkboxes [groupName]="'includedApps'"
[options]="availableApps"
[valueCallback]="appsValueCallback"
[labelCallback]="appsLabelCallback"
>
正如我在上面提到的,Angular2似乎遵循@Input
類成員的順序,並按順序設置/調用它們。問題是,這是事實上的還是法理上的?我不想依賴那些僅僅因爲它目前是以這種方式進行編碼的功能。我對JavaScript反射知之甚少,所以我無法分辨這是否會在任何地方發揮作用。
感謝您的提示。這就是'ngAfterViewInit()或'這樣'的意思,並且希望避免。它需要相當多的樣板代碼,恐怕很容易出錯。 –
沒有指定的輸入順序,因此不太可能避免它。 –
聽起來沒錯。如何把它放到答案中,我會接受 –