diff --git a/adev/shared-docs/directives/external-link/external-link.directive.spec.ts b/adev/shared-docs/directives/external-link/external-link.directive.spec.ts index 110ab2fe9f6..954ad92ace9 100644 --- a/adev/shared-docs/directives/external-link/external-link.directive.spec.ts +++ b/adev/shared-docs/directives/external-link/external-link.directive.spec.ts @@ -41,11 +41,13 @@ describe('ExternalLink', () => { By.css('a[href="https://stackoverflow.com/questions/tagged/angular"]'), ); expect(externalLink.attributes['target']).toEqual('_blank'); + expect(externalLink.attributes['rel']).toEqual('noopener'); }); it('should not internal link have target=_blank attribute', () => { const internalLink = fixture.debugElement.query(By.css('a[href="/roadmap"]')); expect(internalLink.attributes['target']).toBeFalsy(); + expect(internalLink.attributes['rel']).toBeFalsy(); }); it('should not set target=_blank attribute external link when anchor has got noBlankForExternalLink attribute', () => { @@ -53,23 +55,28 @@ describe('ExternalLink', () => { By.css('a[href="https://github.com/angular/angular/issues"]'), ); expect(externalLink.attributes['target']).toBeFalsy(); + expect(externalLink.attributes['rel']).toBeFalsy(); }); }); @Component({ template: ` Stack Overflow - Roadmap + Roadmap + > + GitHub Issues + `, imports: [ExternalLink, RouterLink], }) diff --git a/adev/shared-docs/directives/external-link/external-link.directive.ts b/adev/shared-docs/directives/external-link/external-link.directive.ts index 0812c466e33..349befe123f 100644 --- a/adev/shared-docs/directives/external-link/external-link.directive.ts +++ b/adev/shared-docs/directives/external-link/external-link.directive.ts @@ -18,6 +18,7 @@ import {isExternalLink} from '../../utils/index'; selector: 'a[href]:not([noBlankForExternalLink])', host: { '[attr.target]': 'target', + '[attr.rel]': 'rel', }, }) export class ExternalLink { @@ -25,6 +26,7 @@ export class ExternalLink { private readonly platformId = inject(PLATFORM_ID); target?: '_blank' | '_self' | '_parent' | '_top' | ''; + rel?: string; constructor() { this.setAnchorTarget(); @@ -37,6 +39,7 @@ export class ExternalLink { if (isExternalLink(this.anchor.nativeElement.href)) { this.target = '_blank'; + this.rel = 'noopener'; } } }