Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MdSelect] - server side rendering crash #6045

Closed
jimjim2a opened this issue Jul 26, 2017 · 3 comments · Fixed by #6049
Closed

[MdSelect] - server side rendering crash #6045

jimjim2a opened this issue Jul 26, 2017 · 3 comments · Fixed by #6049
Assignees

Comments

@jimjim2a
Copy link

Bug, feature request, or proposal:

MdSelect component has an issue on the _getTriggerRect method which basically calls browser nativeElement getBoundingClientRect method.

This can't work on node environment an make the app crash

What is the expected behavior?

The method should use the DomAdapter to make the getBoundingClientRect work on all platform. The other solution is to test if we are on browser or not and return a fallback object.

What is the current behavior?

The method calls the nativeElement getBoundingClientRect, this make the app crash.

What are the steps to reproduce?

What is the use-case or motivation for changing an existing behavior?

Make the MdSelect material component work on server

Which versions of Angular, Material, OS, TypeScript, browsers are affected?

Angular 4.3.1
Material 2.0 beta 8
Typescript 2.3.3

Is there anything else we should know?

@crisbeto
Copy link
Member

Interesting, we have a check for server-side rendering that is passing. Do you have a pre-assigned value to the select?

@crisbeto crisbeto self-assigned this Jul 26, 2017
@jimjim2a
Copy link
Author

Hi, yes exactly. More precisely the md-select is part of a reactive form, the pre-assigned value is filled with the FormControl applied on it. Sorry I should have precised it.

<md-select [formControl]="select">
    <md-option *ngFor="let label of choices; let key = index" [value]="key">{{ label }}</md-option>
</md-select>

And then the default value is filled using the setValue() method of the FormControl.

crisbeto added a commit to crisbeto/material2 that referenced this issue Jul 26, 2017
Fixes a server-side rendering error in `md-select` if it has a preselected value, in addition to one in the `md-option` component.

Fixes angular#6045.
andrewseguin pushed a commit that referenced this issue Jul 27, 2017
Fixes a server-side rendering error in `md-select` if it has a preselected value, in addition to one in the `md-option` component.

Fixes #6045.
andrewseguin pushed a commit that referenced this issue Jul 27, 2017
Fixes a server-side rendering error in `md-select` if it has a preselected value, in addition to one in the `md-option` component.

Fixes #6045.
andrewseguin pushed a commit that referenced this issue Jul 27, 2017
Fixes a server-side rendering error in `md-select` if it has a preselected value, in addition to one in the `md-option` component.

Fixes #6045.
andrewseguin pushed a commit that referenced this issue Jul 28, 2017
Fixes a server-side rendering error in `md-select` if it has a preselected value, in addition to one in the `md-option` component.

Fixes #6045.
@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Sep 6, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants