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';
}
}
}