fix(upgrade): upgrade Directive facade should not return different instance from constructor (#27660)

In ngUpgrade (dynamic) we create a dynamic Angular `Directive` that wraps AngularJS components
that are being upgraded. The constructor of this `Directive` class returns a different instance
than `this`. It is this instance that actually contains the life-cycle hook handlers.

This would break in ivy, since the methods on the prototype of the original class are wired up,
rather than the instance methods. This results in hooks like `ngOnInit` not being called.

This commit refactors the code to extend the inner class that was being returned so that the
prototype chain is correct for both ViewEngine and ivy.

This change resolves a number of failing ivy tests, but also exposes other failures that were
masked by this issue. The tests have been updated accordingly.

(FW-812)

PR Close #27660
This commit is contained in:
Pete Bacon Darwin
2018-12-13 18:07:24 +00:00
committed by Miško Hevery
parent 3444aee5da
commit c986d3dcf4
2 changed files with 1075 additions and 1146 deletions

File diff suppressed because it is too large Load Diff