我需要同一个锚链接有条件地指向本地或外部资源。我试过了
<a [href]="outside?externalUrl:null" [routerLink]="outside?[]:['/route',id]" >test</a>
但是不管用。我没有得到任何错误,但它指向同一个本地页面,忽略了外部URL。有什么想法吗?
另一种选择是构建链接,但我找不到任何文档如何在服务内部访问路由器链接
编辑:我知道我可以用*ngIf
克隆整个链接,但我不想这样做,我的链接包含一个带有一系列选项的视频标签
您可以通过在指令中注入 RouterLinkWithHref 来访问 routerLink
实例。
指令:
import { ElementRef, Optional, Input, Directive, OnChanges } from '@angular/core';
import { RouterLinkWithHref } from '@angular/router';
@Directive({
selector: '[externalLink]'
})
export class ExternalLinkDirective implements OnChanges {
@Input() externalLink: string;
constructor(
private el: ElementRef,
@Optional() private link: RouterLinkWithHref
) {}
ngOnChanges(){
if (!this.link || !this.externalLink) {
return;
}
this.el.nativeElement.href=this.link.href=this.externalLink;
// Replace onClick
this.link.onClick = (...args: any[]) => {
return true;
}
}
}
用法:
html prettyprint-override"><!-- Ignore router link and use external link -->
<a routerLink="/some/path" externalLink="https://google.com">Link</a>
对于条件href,在attr上前置。在href使用null值为我工作之前,就像这样:
[attr.href]="!item.subMenu ? item.url : null"
最简单的方法是使用 *ngIf / else
:
<ng-container *ngIf="outside; else internalBlock">
<a [href]="externalUrl">External</a>
</ng-container>
<ng-template #internalBlock>
<a [routerLink]="['/route', id]">Internal</a>
</ng-template>
编辑#1:(丑陋的解决方案)
既然不想用< code>*ngIf(我还是不明白为什么),可以这样做:
模板:
<a href="javascript:void(0)" (click)="handleClick(outside, '/route', id, externalUrl)">Link</a>
组成部分:
handleClick(outside: boolean, internalUrl: string, internalId: string, externalUrl: string): void {
if (outside) {
window.location.href = externalUrl;
// You can also use Location class of Angular
} else {
this.router.navigate([`${internalUrl}/${internalId}`]);
}
}
问题内容: 如何使用jQuery启用或禁用锚点? 问题答案: 为了防止锚跟随指定的位置,我建议使用:
我在Spring中使用注释定义了使用cron样式模式的调度作业。 cron模式存储在配置属性文件中。实际上有两个属性文件:一个默认配置文件,一个与环境相关的配置文件(例如dev、test、prod customer1、prod customer2等)覆盖了一些默认值。 我在spring上下文中配置了一个属性占位符bean,它允许我使用样式的占位符从属性文件中导入值。 作业bean如下所示: 我的上
问题内容: 我想做的是在有webclient的Webflux中的Mono上有条件地重复。情况如下: 我们有一些商务休息服务服务,可返回生成的文档。此文档的生成是由在此之前调用的另一服务触发的。但是,回到正题:文档生成服务需要10到30秒。我们想要做的是:10秒钟后检查是否生成文档(单声道)。如果是这样,一切都很好。如果不是,请在5秒钟后重复(或重试)并检查是否生成了文档。依此类推,直到(最坏的情况
我要做的是用WebClient对Webflux中的单声道进行有条件的重复。情况如下: 我们有一些返回生成文档的业务rest服务。此文档的生成是从在此文档之前调用的另一个服务触发的。但是,回到业务:文档生成服务需要10-30秒。我们要做的是:10秒后检查是否生成了文档(单)。如果是这样,一切都很好。如果没有,请在5秒后重复(或重试)并检查是否生成了文档。以此类推,直到(最坏的情况)30秒后超时。这可
我正在基于谷歌的hello_ar_java示例应用程序,围绕这个Agora ARcore演示构建我的应用程序。 此应用程序将捕获用户的点击,并检查是否在场景中找到任何平面。如果是,请在该点创建一个锚点。 我想在各种锚之间画一条线。 我在网上找到的所有东西都使用场景窗体和片段。 目前,我已经设法实现了没有arFraium但行不显示,可能是因为这种方法,我不知道如何取代没有arFrature: 要在我
问题内容: 我正在使用注释在Spring中使用cron样式模式定义计划的作业。 Cron模式存储在配置属性文件中。实际上,有两个属性文件:一个默认配置,一个与环境相关的配置文件配置(例如dev,test,prod客户1,prod客户2等),并覆盖某些默认值。 我在春天的上下文中配置了一个属性占位符bean,这使我可以使用样式占位符从属性文件中导入值。 工作豆看起来像这样: 我的上下文XML的相关部