Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Component controllers have constructors fired with a different this than $onChanges later on #14359

Closed
mgol opened this issue Apr 1, 2016 · 2 comments

Comments

@mgol
Copy link
Member

mgol commented Apr 1, 2016

Do you want to request a feature or report a bug?

A bug.

What is the current behavior?

Component controllers have constructors fired with a different this than $onChanges later on.

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (template: http://plnkr.co/edit/tpl:yBpEi4).

  1. Open http://plnkr.co/edit/oeulkVsfau0HfkHTdyeI
  2. Open the console.

What is the expected behavior?

There should be no error.

What is the motivation / use case for changing the behavior?

The error is caused by the fact that the constructor is fired with a different this than the $onInit method later on. This is a bug, there should be only one instance of the controller.

Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.

The current 1.x snapshot as well as the v1.5.x branch tip are buggy. It seems to work fine with Angular 1.5.3.

Other information (e.g. stacktraces, related issues, suggestions how to fix)

@mgol mgol added this to the 1.5.4 milestone Apr 1, 2016
@mgol
Copy link
Member Author

mgol commented Apr 1, 2016

I'm setting a milestone to 1.5.4 as this seems to be a regression from 1.5.3.

@petebacondarwin
Copy link
Contributor

I believe that this is fixed by #14355

petebacondarwin added a commit that referenced this issue Apr 1, 2016
Due to the way that we instantiate controllers, the `$onChanges` hook
was not always available at the time we were trying to trigger the initial
call to this hook. For instance, if the hook was actually defined inside
the constructor function.

This commit fixes that but also fixes the fact that the initial call was
being made in the postDigest anyway, which was incorrect because the
it should have been made before the `$onInit` call.

Closes #14355
Closes #14359
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants