Javascript 用一个URL处理多个URL(单击)
我接管了一个状况相当糟糕的项目。我很难理解为什么之前的开发人员决定这样编写社交图标组件。我不知道如何处理每个点击时的网址。这里是我现在的代码 TS:Javascript 用一个URL处理多个URL(单击),javascript,angular,typescript,Javascript,Angular,Typescript,我接管了一个状况相当糟糕的项目。我很难理解为什么之前的开发人员决定这样编写社交图标组件。我不知道如何处理每个点击时的网址。这里是我现在的代码 TS: 从“@angular/core”导入{Component,OnInit,ElementRef,EventEmitter}; 从“@fortwome/free brands svg icons”导入{faFacebook,faTwitter,faLinkedin}”; 从“@fortawesome/angular fontawesome”导入{FaI
从“@angular/core”导入{Component,OnInit,ElementRef,EventEmitter};
从“@fortwome/free brands svg icons”导入{faFacebook,faTwitter,faLinkedin}”;
从“@fortawesome/angular fontawesome”导入{FaIconComponent}”;
@组成部分({
选择器:“应用程序社交媒体”,
templateUrl:“./social media.component.html”,
样式URL:[“/socialmedia.component.scss”]
})
导出类SocialMediaComponent实现OnInit{
iconTwitter=faTwitter;
iconFaceBook=faFacebook;
iconLinkedIn=faLinkedin;
public static SocialMediaClicked:EventEmitter=neweventemitter();
构造函数(){}
恩戈尼尼特(){
}
onIconClicked(元素:FaIconComponent){
SocialMediaComponent.SocialMediaClicked.emit(ele);
控制台日志(ele);
}
}
HTML:
当点击
图标时,他正在发布有关社交媒体的信息,包括名称,我认为应该删除它,因为它没有用处,您可以添加一个切换框
语句来直接处理重定向:
constructor(private router: Router) { }
onIconClicked(ele: any) {
switch (ele) {
case 'twitter':
this.router.navigate(['your_link_here']);
// or window.open(link, '_blank'); to open an external link in a new tab
break;
case 'linkedIn':
this.router.navigate(['your_link_here']);
// or window.open(link, '_blank'); to open an external link in a new tab
break;
case 'faceBook':
this.router.navigate(['your_link_here']);
// or window.open(link, '_blank'); to open an external link in a new tab
break;
default:
break;
}
}
某种程度上取决于接收事件的父组件中发生的情况您试图如何处理发射
?您正在尝试重定向到某个位置吗?在app.component.ts中,我找到了这个SocialMediaComponent.SocialMediaClicked.subscribe(ele=>{console.log(ele.icon.iconName);})代码>否,因为绑定,他实际上发出的是属性而不是字符串,但这些属性不存在组件,因此事件值始终是未定义的。我可以看到eleI日志的屏幕截图进行测试,但我认为不值得模拟所有这些内容来证明这一点,Sorry我很确定他正在发布社交媒体的名称,以便稍后进行重定向,我认为这是usless,因为他可以用相同的方法直接进行重定向,请参阅我的更新答案这些社交媒体链接到外部站点,并应在新选项卡中打开。
<fa-icon aria-label="Twitter" class="bopd-footer-icon"
#twitter
(click)="onIconClicked(twitter)"
[icon]="iconTwitter"
></fa-icon>
<fa-icon aria-label="LinkedIn" class="bopd-footer-icon"
#linkedIn
(click)="onIconClicked(linkedIn)"
[icon]="iconLinkedIn"
></fa-icon>
<fa-icon aria-label="Facebook" class="bopd-footer-icon"
#faceBook
(click)="onIconClicked(faceBook)"
[icon]="iconFaceBook"
></fa-icon>
constructor(private router: Router) { }
onIconClicked(ele: any) {
switch (ele) {
case 'twitter':
this.router.navigate(['your_link_here']);
// or window.open(link, '_blank'); to open an external link in a new tab
break;
case 'linkedIn':
this.router.navigate(['your_link_here']);
// or window.open(link, '_blank'); to open an external link in a new tab
break;
case 'faceBook':
this.router.navigate(['your_link_here']);
// or window.open(link, '_blank'); to open an external link in a new tab
break;
default:
break;
}
}