【发布时间】:2018-02-26 20:28:53
【问题描述】:
我有一个自定义按钮组件,像这样(简化):
@Component({
selector: 'my-button',
template: `
<button (click)="handleClick($event)">
<ng-content></ng-content>
</button>
`
})
export class MyButtonComponent {
@Output() public onClick: EventEmitter<Event> = new EventEmitter();
handleClick(e) {
this.onClick.emit(e);
}
}
按钮的正常用例是用户附加onClick 处理程序。但是,有些用户会希望将按钮用作链接,如下所示:
<my-button [routerLink]="'/dashboard'">Go to dashboard</my-button>
在这种情况下,我想做的是将my-button 渲染为<a> 元素,而不是文字<button>。但为了做到这一点,我需要检测到用户已将[routerLink] 指令附加到它。
有什么办法吗?
我知道我可以添加一个布尔值 @Input() 属性,将渲染切换到 <a> 模式,但这感觉很笨重。
【问题讨论】:
-
无论哪种方式,您都必须使用
@Input(),对于RouterLink。 -
你是什么意思,@12 秒?我现在不使用它,并且链接有效。
-
抱歉,我没有导入 RouteModule。我将就如何实现这一点添加我的答案。
标签: javascript angular