2017-04-21 42 views
-1

只有在特定條件爲真時纔可以設置nsRouterLink?條件設置angular/nativescript nsRouterLink

我們假設,我有一個列表視圖,每個項目都有自己的nsRouterLink到一個詳細頁面。但是列表中的某些項目沒有詳細信息所需的id,所以它們應該不會被其他人點擊。

我知道我可以使用onClick綁定並自行處理它,但是nsRouterLink也可以自動處理它嗎?

例如:

<StackLayout *ngFor="let item of items"> 
    <StackLayout [nsRouterLink]="['/path/' + item.id]"> 
     <!-- Content goes here --> 
    </StackLayout> 
</StackLayout> 
+0

你可以嘗試可切換的綁定,這應該與nsrouterlink – mast3rd3mon

+0

工作我或多或少是新的角,所以你可以添加一個例子嗎? – shaedrich

+0

'[nsRouterLink] =「?'':'''' – mast3rd3mon

回答

0
我沒有用太多nsRouterLink

。 但是,如果將鏈接保留爲空或未定義,會發生什麼情況?

如果您確實在點擊事件上處理鏈接,則應該在代碼端有條件地監聽事件,這意味着該組件。

另一種選擇是顯示2個不同的組件。 如果詳細信息,請顯示nsRouterLink 沒有詳細信息,顯示標籤。

類似的東西也可以工作。

+0

您是否認爲有「無數據可顯示」的通知? – shaedrich

+0

我想,這可以在詳細組件中處理,而不是在列表中自己處理...... – shaedrich

0

使用IsEnabled屬性,將禁用按鈕,如果用戶的心不是允許進入下一個頁面

<Button [isEnabled]="<value to check>" text="<Text>" [nsRouterLink]="['/<link>']"></Button>

+0

它不是一個按鈕,它是圍繞項目內容的整個StackLayout。我想,我應該加上這個問題。 – shaedrich

+0

你不能做你想要的東西,如果你使用ngfor,而不是很容易 – mast3rd3mon

+0

你是什麼意思分別說你會說什麼問題? – shaedrich

1

這有什麼解決方案,我看到了好幾次:

<StackLayout *ngFor="let item of items"> 
    <StackLayout [nsRouterLink]="[item?.id ? '/path/' + item.id : false]"> 
     <!-- Content goes here --> 
    </StackLayout> 
</StackLayout>