Skip to content

Commit 44a0a4f

Browse files
crisbetotinayuangao
authored andcommitted
fix(focus-monitor): server-side rendering error when using focusVia (#10729)
Fixes an error that is being thrown by `focusVia` when it's used on the server.
1 parent 923c733 commit 44a0a4f

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

src/cdk/a11y/focus-monitor/focus-monitor.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,11 @@ export class FocusMonitor implements OnDestroy {
140140
*/
141141
focusVia(element: HTMLElement, origin: FocusOrigin): void {
142142
this._setOriginForCurrentEventQueue(origin);
143-
element.focus();
143+
144+
// `focus` isn't available on the server
145+
if (typeof element.focus === 'function') {
146+
element.focus();
147+
}
144148
}
145149

146150
ngOnDestroy() {

src/universal-app/kitchen-sink/kitchen-sink.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
CdkTableModule,
44
DataSource
55
} from '@angular/cdk/table';
6-
import {Component, NgModule} from '@angular/core';
6+
import {Component, ElementRef, NgModule} from '@angular/core';
77
import {
88
MatAutocompleteModule,
99
MatBadgeModule,
@@ -44,6 +44,7 @@ import {
4444
} from '@angular/material';
4545
import {BrowserModule} from '@angular/platform-browser';
4646
import {ServerModule} from '@angular/platform-server';
47+
import {FocusMonitor} from '@angular/cdk/a11y';
4748
import {Observable, of as observableOf} from 'rxjs';
4849

4950
export class TableDataSource extends DataSource<any> {
@@ -77,7 +78,10 @@ export class KitchenSink {
7778
constructor(
7879
snackBar: MatSnackBar,
7980
dialog: MatDialog,
80-
viewportRuler: ViewportRuler) {
81+
viewportRuler: ViewportRuler,
82+
focusMonitor: FocusMonitor,
83+
elementRef: ElementRef<HTMLElement>) {
84+
focusMonitor.focusVia(elementRef.nativeElement, 'program');
8185
snackBar.open('Hello there');
8286
dialog.open(TestDialog);
8387

0 commit comments

Comments
 (0)