angular-docs-cn/packages/core/test
Pete Bacon Darwin f535f31d78 fix(ivy): match attribute selectors for content projection with inline-templates (#29041)
The content projection mechanism is static, in that it only looks at the static
template nodes before directives are matched and change detection is run.
When you have a selector-based content projection the selection is based
on nodes that are available in the template.

For example:

```
<ng-content selector="[some-attr]"></ng-content>
```

would match

```
<div some-attr="..."></div>
```

If you have an inline-template in your projected nodes. For example:

```
<div *ngIf="..." some-attr="..."></div>
```

This gets pre-parsed and converted to a canonical form.

For example:

```
<ng-template [ngIf]="...">
  <div some-attr=".."></div>
</ng-template>
```

Note that only structural attributes (e.g. `*ngIf`) stay with the `<ng-template>`
node. The other attributes move to the contained element inside the template.

When this happens in ivy, the ng-template content is removed
from the component template function and is compiled into its own
template function. But this means that the information about the
attributes that were on the content are lost and the projection
selection mechanism is unable to match the original
`<div *ngIf="..." some-attr>`.

This commit adds support for this in ivy. Attributes are separated into three
groups (Bindings, Templates and "other"). For inline-templates the Bindings
and "other" types are hoisted back from the contained node to the `template()`
instruction, so that they can be used in content projection matching.

PR Close #29041
2019-03-07 11:27:36 -08:00
..
acceptance fix(ivy): ViewRef.detachFromAppRef should clean the DOM (#29159) 2019-03-07 08:56:26 -08:00
animation fix(animations): ensure `position` and `display` styles are handled outside of keyframes/web-animations (#28911) 2019-02-27 11:57:31 -08:00
bundling refactor(ivy): define new `AttributeMarker.Template` marker (#29041) 2019-03-07 11:27:36 -08:00
change_detection build: extract interface and util sub compilation from core (#28028) 2019-01-10 16:31:44 -08:00
debug test(ivy): failing test for FW-1064 (#29130) 2019-03-06 11:02:47 -08:00
di feat(ivy): improve stacktrace for `R3Injector` errors (#28207) 2019-02-05 01:53:20 -05:00
dom fix(platform-server): add styles to elements correctly (#22527) 2018-03-14 14:12:31 -07:00
linker fix(ivy): content projection should not corrupt TNode data structures (#29130) 2019-03-06 11:02:47 -08:00
metadata refactor(core): do not remove `templateUrl` when resolving (#28055) 2019-02-12 20:58:27 -08:00
reflection build: extract interface and util sub compilation from core (#28028) 2019-01-10 16:31:44 -08:00
render3 fix(ivy): match attribute selectors for content projection with inline-templates (#29041) 2019-03-07 11:27:36 -08:00
sanitization fix(core): traverse and sanitize content of unsafe elements (#28804) 2019-02-26 13:32:09 -08:00
strict_types fix(ivy): allow directive inheritance in strict mode (#28634) 2019-02-13 09:50:15 -08:00
testability build: extract interface and util sub compilation from core (#28028) 2019-01-10 16:31:44 -08:00
util fix(core): improve global variable detection (#28679) 2019-02-13 12:05:41 -08:00
view style: enforce buildifier lint on CI (#28186) 2019-02-26 16:57:41 -08:00
zone build: extract interface and util sub compilation from core (#28028) 2019-01-10 16:31:44 -08:00
BUILD.bazel build: rules_nodejs 0.26.0 & use @npm instead of @ngdeps now that downstream angular build uses angular bundles (#28871) 2019-02-28 12:06:36 -08:00
application_init_spec.ts fix(ivy): Enable AoT tests to run on CI; disable failing tests (#26975) 2018-11-07 10:35:20 -08:00
application_module_spec.ts build(core): remove `main()` from specs (#21053) 2017-12-22 13:10:51 -08:00
application_ref_integration_spec.ts test(ivy): finish root cause analysis for @angular/core TestBed failing tests (#27510) 2018-12-06 13:41:02 -08:00
application_ref_spec.ts fix(ivy): link correct ngModule's injector to the bootstrapped component (#28183) 2019-01-23 15:06:59 -08:00
component_fixture_spec.ts test(ivy): update root causes for @angular/core TestBed failures (#27370) 2018-11-30 13:41:21 -08:00
dev_mode_spec.ts build(core): remove `main()` from specs (#21053) 2017-12-22 13:10:51 -08:00
directive_lifecycle_integration_spec.ts test(ivy): update root causes for @angular/core TestBed failures (#27419) 2018-12-03 08:19:56 -08:00
error_handler_spec.ts refactor(ivy): refactor more files in DI to prepare it for bazel packages (#28098) 2019-01-14 09:55:30 -08:00
event_emitter_spec.ts fix(core): fix proper propagation of subscriptions in EventEmitter (#22016) 2018-02-06 07:56:33 -08:00
fake_async_spec.ts fix(ivy): update token used for fakeAsync test (#28383) 2019-01-29 16:39:14 -08:00
forward_ref_integration_spec.ts build: update to rules_typescript 0.25.1 (#28625) 2019-02-21 07:46:21 -08:00
i18n_integration_spec.ts fix(ivy): process property bindings in i18n blocks similar to non-i18n bindings (#28969) 2019-02-27 11:56:12 -08:00
spies.ts build: fix file paths after moving modules/@angular/* to packages/* 2017-03-08 16:29:28 -08:00
test_bed_async_spec.ts fix(ivy): stub TestBed.compileComponents implementation (#26506) 2018-10-17 13:08:14 -07:00
test_bed_spec.ts fix(ivy): proper component resolution in case of inheritance (#28439) 2019-02-05 23:29:04 -05:00
testing_internal_spec.ts build: update to rules_typescript 0.25.1 (#28625) 2019-02-21 07:46:21 -08:00
util_spec.ts build: extract interface and util sub compilation from core (#28028) 2019-01-10 16:31:44 -08:00