remackgeek
8df888dfb4
fix(elements): run strategy methods in correct zone ( #37814 )
...
Default change detection fails in some cases for @angular/elements where
component events are called from the wrong zone.
This fixes the issue by running all ComponentNgElementStrategy methods
in the same zone it was created in.
Fixes #24181
PR Close #37814
2020-07-22 20:35:47 -07:00
George Kalpakas
eba9dd364e
fix(elements): fire custom element output events during component initialization ( #37570 )
...
Previously, event listeners for component output events attached on an
Angular custom element before inserting it into the DOM (i.e. before
instantiating the underlying component) didn't fire for events emitted
during initialization lifecycle hooks, such as `ngAfterContentInit`,
`ngAfterViewInit`, `ngOnChanges` (initial call) and `ngOnInit`.
The reason was that `NgElementImpl` [subscribed to events][1] _after_
calling [ngElementStrategy#connect()][2], which is where the
[initial change detection][3] takes place (running the initialization
lifecycle hooks).
This commit fixes this by:
1. Ensuring `ComponentNgElementStrategy#events` is defined and available
for subscribing to, even before instantiating the component.
2. Changing `NgElementImpl` to subscribe to `NgElementStrategy#events`
(if available) before calling `NgElementStrategy#connect()` (which
initializes the component instance) if available.
3. Falling back to the old behavior (subscribing to `events` after
calling `connect()` for strategies that do not initialize `events`
before their `connect()` is run).
NOTE:
By falling back to the old behavior when `NgElementStrategy#events` is
not initialized before calling `NgElementStrategy#connect()`, we avoid
breaking existing custom `NgElementStrategy` implementations (with
@remackgeek's [ElementZoneStrategy][4] being a commonly used example).
Jira issue: [FW-2010](https://angular-team.atlassian.net/browse/FW-2010 )
[1]: https://github.com/angular/angular/blob/c0143cb2abdd172de1b95fd1d2c4cfc738640e28/packages/elements/src/create-custom-element.ts#L167-L170
[2]: https://github.com/angular/angular/blob/c0143cb2abdd172de1b95fd1d2c4cfc738640e28/packages/elements/src/create-custom-element.ts#L164
[3]: https://github.com/angular/angular/blob/c0143cb2abdd172de1b95fd1d2c4cfc738640e28/packages/elements/src/component-factory-strategy.ts#L158
[4]: https://github.com/remackgeek/elements-zone-strategy/blob/f1b6699495a8c0909dbbfbdca12770ecca843e15/projects/elements-zone-strategy/src/lib/element-zone-strategy.ts
Fixes #36141
PR Close #37570
2020-06-29 10:33:40 -07:00
atscott
7b005bb9cf
Revert "fix(elements): fire custom element output events during component initialization ( #36161 )" ( #37524 )
...
This reverts commit e9bff5fe9f . Failures
were detected in Google tests due to this commit
PR Close #37524
2020-06-10 17:28:57 +00:00
George Kalpakas
2a330a60ed
fix(elements): fire custom element output events during component initialization ( #36161 )
...
Previously, event listeners for component output events attached on an
Angular custom element before inserting it into the DOM (i.e. before
instantiating the underlying component) didn't fire for events emitted
during initialization lifecycle hooks, such as `ngAfterContentInit`,
`ngAfterViewInit`, `ngOnChanges` (initial call) and `ngOnInit`.
The reason was that that `NgElementImpl` [subscribed to events][1]
_after_ calling [ngElementStrategy#connect()][2], which is where the
[initial change detection][3] takes place (running the initialization
lifecycle hooks).
This commit fixes this by:
1. Ensuring `ComponentNgElementStrategy#events` is defined and available
for subscribing to, even before instantiating the component.
2. Ensuring `NgElementImpl` subscribes to `NgElementStrategy#events`
before calling `NgElementStrategy#connect()` (which initializes the
component instance).
Jira issue: [FW-2010](https://angular-team.atlassian.net/browse/FW-2010 )
[1]: https://github.com/angular/angular/blob/c0143cb2abdd172de1b95fd1d2c4cfc738640e28/packages/elements/src/create-custom-element.ts#L167-L170
[2]: https://github.com/angular/angular/blob/c0143cb2abdd172de1b95fd1d2c4cfc738640e28/packages/elements/src/create-custom-element.ts#L164
[3]: https://github.com/angular/angular/blob/c0143cb2abdd172de1b95fd1d2c4cfc738640e28/packages/elements/src/component-factory-strategy.ts#L158
Fixes #36141
PR Close #36161
2020-06-05 10:36:39 -07:00
Joey Perrott
d1ea1f4c7f
build: update license headers to reference Google LLC ( #37205 )
...
Update the license headers throughout the repository to reference Google LLC
rather than Google Inc, for the required license headers.
PR Close #37205
2020-05-26 14:26:58 -04:00
Joey Perrott
698b0288be
build: reformat repo to new clang@1.4.0 ( #36613 )
...
PR Close #36613
2020-04-14 12:08:36 -07:00
George Kalpakas
9ba46d9f88
fix(elements): correctly handle setting inputs to undefined ( #36140 )
...
Previously, when an input property was initially set to `undefined` it
would not be correctly recognized as a change (and trigger
`ngOnChanges()`).
This commit ensures that explicitly setting an input to `undefined` is
correctly handled the same as setting the property to any other value.
This aligns the behavior of Angular custom elements with that of the
corresponding components when used directly (not as custom elements).
PR Close #36140
2020-03-24 10:29:33 -07:00
George Kalpakas
b14ac96750
fix(elements): correctly set SimpleChange#firstChange for pre-existing inputs ( #36140 )
...
Previously, when an input property was set on an `NgElement` before
instantiating the underlying component, the `SimpleChange` object passed
to `ngOnChanges()` would have `firstChange` set to false, even if this
was the first change (as far as the component instance was concerned).
This commit fixes this by ensuring `SimpleChange#firstChange` is set to
true on first change, regardless if the property was set before or after
instantiating the component. This alignthe behavior of Angular custom
elements with that of the corresponding components when used directly
(not as custom elements).
Jira issue: [FW-2007](https://angular-team.atlassian.net/browse/FW-2007 )
Fixes #36130
PR Close #36140
2020-03-24 10:29:32 -07:00
Balint Mero
7151eae36d
fix(elements): handle falsy initial value ( #31604 )
...
Fixes angular/angular#30834
PR Close #31604
2019-07-18 14:26:37 -07:00
George Kalpakas
787c54736c
test: run unit tests in random order ( #19904 )
...
PR Close #19904
2018-07-06 13:48:02 -07:00
Igor Minar
b43f8bc7d3
feat(core): upgrade rxjs to 6.0.0-alpha.4 ( #22573 )
...
PR Close #22573
2018-03-19 21:51:51 -07:00
Andrew Seguin
87f60bccfd
feat(elements): injector create ( #22413 )
...
PR Close #22413
2018-03-16 12:39:07 -07:00
Andrew Seguin
46efd4b938
feat(elements): George's comments ( #22413 )
...
PR Close #22413
2018-03-16 12:39:07 -07:00
Andrew Seguin
19368085aa
feat(elements): provide type, not factory; remove config need ( #22413 )
...
PR Close #22413
2018-03-16 12:39:07 -07:00
Andrew Seguin
d2be675acc
feat(elements): add tests for component factory strategy ( #22413 )
...
PR Close #22413
2018-03-16 12:39:07 -07:00
Andrew Seguin
22b96b9690
feat(elements): add support for creating custom elements ( #22413 )
...
PR Close #22413
2018-03-16 12:39:07 -07:00