在core.js文件的setHostBindingsByExecutingExpandoInstructions(tView, lView)函数里设置断点:
进入fesm2015/router.js里:
RouterLinkWithHref.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: RouterLinkWithHref, selectors: [["a", "routerLink", ""], ["area", "routerLink", ""]], hostVars: 2, hostBindings: function RouterLinkWithHref_HostBindings(rf, ctx) { if (rf & 1) {
ɵngcc0.ɵɵlistener("click", function RouterLinkWithHref_click_HostBindingHandler($event) { return ctx.onClick($event.button, $event.ctrlKey, $event.shiftKey, $event.altKey, $event.metaKey); });
} if (rf & 2) {
ɵngcc0.ɵɵhostProperty("href", ctx.href, ɵngcc0.ɵɵsanitizeUrl);
ɵngcc0.ɵɵattribute("target", ctx.target);
} }, inputs: { routerLink: "routerLink", preserveQueryParams: "preserveQueryParams", target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", state: "state" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });
RouterLinkWithHref.ctorParameters = () => [
{ type: Router },
{ type: ActivatedRoute },
{ type: LocationStrategy }
];
RouterLinkWithHref里,设置hostProperty:
使用renderer给a标签设置href属性:
更多Jerry的原创文章,尽在:“汪子熙”: