拦截传出的链接Angular 4

ruf*_*kde 4 href httprequest interceptor angular

所以我写了这个小应用程序,在其中显示了从Wikipedia获取的一些信息。此提取的HTML内也有链接。

所以我想做的是:

每次用户单击链接时,我都想拦截该链接并执行自定义行为,而不是默认的浏览器重定向。

Angular httpinterceptor中的构建在这里不起作用。我如何获得这种效果?

编辑:似乎我误解了href和http请求的工作方式。我仍然想对应用程序上单击的每个链接进行自定义行为。有没有办法拦截那些“事件”?

编辑:对于Angular 2+解决方案,请看下面我的答案。它是一种拦截标签的服务。

ruf*_*kde 6

好了,搜索了一段时间后,我发现了一个“非角度”解决方案: 覆盖Javascript中链接('a')对象的默认行为

因此,我以此创建了一个服务,并将其注入到我的App Root组件中。

import { Injectable } from '@angular/core';

@Injectable() export class HrefInterceptorService {

    constructor() {
        document.onclick = this.interceptHref;
    }

    interceptHref(_event) {
        const tEvent = _event || window.event;

        const element = tEvent.target || tEvent.srcElement;

        if (element.tagName === 'A') {

            console.log("intercept!");

            return false; // prevent default action and stop event propagation
        }
    } }
Run Code Online (Sandbox Code Playgroud)

它有点hacky,但相对灵活。