javascript 条件集angular/nativescript nsRouterLink

ttcibm8c  于 12个月前  发布在  Java
关注(0)|答案(4)|浏览(77)

是否可以仅在特定条件为真时才设置nsRouterLink
让我们假设,我有一个列表视图,每个项目都有自己的nsRouterLink到一个详细信息页面。但是列表中的一些项目没有详细信息所需的id,所以它们不应该是可点击的,而其他项目应该是。
我知道我可以只使用onClick绑定并自己处理它,但是nsRouterLink也可以自动处理吗?
举例来说:

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

字符串

xam8gpfp

xam8gpfp1#

这个解决方案是什么,我见过几次:

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

字符串

xxls0lw8

xxls0lw82#

添加falsenull会产生类似的错误:
错误:NG 04008:请求的路径在索引0处包含空段

ERROR错误:未捕获(在promise中):错误:NG 04002:无法匹配任何路由。URL段:'home/false'
错误:NG 04002:无法匹配任何路由. URL段:'home/false'``真正工作没有任何错误:

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

字符串

hxzsmxv2

hxzsmxv23#

我没有使用nsRouterLink太多。但是当你离开nullundefined的链接时会发生什么?
如果你真的处理了click事件上的链接,那么有条件地监听事件应该在代码端完成,这意味着组件。
另一个选项是显示2个不同的组件。

  • 如果详细→显示nsRouterLink
  • 如果没有详细信息→显示标签。

这样的东西也可以工作。

e1xvtsh3

e1xvtsh34#

使用isEnabled属性,如果不允许用户转到下一页,该属性将禁用该按钮

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

字符串

相关问题