Skip to content
This repository has been archived by the owner on Feb 22, 2018. It is now read-only.

nested shadow dom component in non-shadow template not showing content #1111

Closed
rhysbrettbowen opened this issue Jun 5, 2014 · 7 comments
Closed

Comments

@rhysbrettbowen
Copy link

@component(
selector: 'outer',
template: 'A<inner>B</inner>C',
useShadowDom: false)
class Outer {}

@component(
selector: 'inner',
template: 'Z<content></content>Z')
class Inner {}

<outer></outer>

will display:

AZZC - changing the useShadowDom to true and it displays correctly (AZBZC)

Same with putting a useShadowDom:false on Inner, and if I do the reverse (outer shadow inside no shadow).

@jbdeboer
Copy link
Contributor

jbdeboer commented Jun 5, 2014

Are you using version 0.11.0 or github HEAD?

@rhysbrettbowen
Copy link
Author

0.11.0
On Jun 5, 2014 5:38 PM, "James deBoer" [email protected] wrote:

Are you using version 0.11.0 or github HEAD?


Reply to this email directly or view it on GitHub
#1111 (comment)
.

@jbdeboer
Copy link
Contributor

jbdeboer commented Jun 6, 2014

Could you try against github, there are a couple unreleased fixes around this issue

@rhysbrettbowen
Copy link
Author

What's the easiest way to do that? (using dart editor).

@bgourlie
Copy link
Contributor

bgourlie commented Jun 9, 2014

You can use Dart Editor's pubspec editor to specify a git reference to a package. Change the "Source" dropdown from "hosted" to "git". Set the path to https://github.com/angular/angular.dart.git and the Git ref to master.

@rhysbrettbowen
Copy link
Author

Still getting AZZC. It says angular 0.12.0 now in the packages directory so assuming I'm getting the latest.

Noticed my original comment had the angle brackets removed so I've fixed that up.

@rkirov rkirov self-assigned this Jul 16, 2014
@rkirov
Copy link
Contributor

rkirov commented Jul 16, 2014

Problem still exists on upstream/master, looking into it.

rkirov added a commit to rkirov/angular.dart that referenced this issue Jul 26, 2014
Breaking change: Regular (application) injectors cannot construct
DirectiveInjectors (DI).  Only compilers create DI as part of view
creation process.

Breaking change: directive injector parent is now private. New public
method on dependency injector - parentGet. Allowing to get through the
usual chain but skipping itself.

Component Injectors now break the resolution chain (except when called
directly.)

Application Injector reference is passed through view creation and
passed into new Directive Injector (instead of using
parentInjector.appInjector, which is wrong when used with ng-view).

Internal changes:
Unwind recursion from the directive injector.
Remove EventListener from View.
TestBed does not recieve a DI in its constructor.
Replace DefaultDirectiveInjector with DirectiveInjector (with parent = null).
Component visibility handled outside the visibility enum.
Removed Shadowless and ShadowDirectiveInjector subclasses.

Closes dart-archive#1111
rkirov added a commit to rkirov/angular.dart that referenced this issue Jul 28, 2014
Breaking change: Regular (application) injectors cannot construct
DirectiveInjectors (DI).  Only compilers create DI as part of view
creation process.

Deprecation: directive injector parent is now private. New public
method on dependency injector - parentGet, which allows to get through the
usual chain but skipping itself.

Component Injectors now break the resolution chain (except when called
directly.)

TestBed does not need DI in its constructor.

Internal changes:
- Application Injector reference is passed through view creation and
passed into new Directive Injector (instead of using
parentInjector.appInjector, which is wrong when used with ng-view).
- Unwind recursion from the directive injector.
- Remove EventListener from View.
- Replace DefaultDirectiveInjector with DirectiveInjector (with parent = null).
- Component visibility handled outside the visibility enum.
- Removed Shadowless and ShadowDirectiveInjector subclasses.

Closes dart-archive#1111
rkirov added a commit to rkirov/angular.dart that referenced this issue Aug 19, 2014
Breaking change: Regular (application) injectors cannot construct
DirectiveInjectors (DI). Only compilers create DI as part of view
creation process.

Deprecation: directive injector parent is now private. New public
method on dependency injector - parentGet, which allows to get through the
usual chain but skipping itself.

Component Injectors now break the resolution chain (except when called
directly.)

TestBed does not need DI in its constructor.

Internal changes:
- Application Injector reference is passed through view creation and
passed into new Directive Injector (instead of using
parentInjector.appInjector, which is wrong when used with ng-view).
- Unwind recursion from the directive injector.
- Remove EventListener from View.
- Replace DefaultDirectiveInjector with DirectiveInjector (with parent = null).
- Component visibility handled outside the visibility enum.
- Removed Shadowless and ShadowDirectiveInjector subclasses.

Closes dart-archive#1111
rkirov added a commit to rkirov/angular.dart that referenced this issue Aug 19, 2014
Breaking change: Regular (application) injectors cannot construct
DirectiveInjectors (DI). Only compilers create DI as part of view
creation process.

Deprecation: directive injector parent is now private. New public
method on dependency injector - parentGet, which allows to get through the
usual chain but skipping itself.

Component Injectors now break the resolution chain (except when called
directly.)

TestBed does not need DI in its constructor.

Internal changes:
- Application Injector reference is passed through view creation and
passed into new Directive Injector (instead of using
parentInjector.appInjector, which is wrong when used with ng-view).
- Unwind recursion from the directive injector.
- Remove EventListener from View.
- Replace DefaultDirectiveInjector with DirectiveInjector (with parent = null).
- Component visibility handled outside the visibility enum.
- Removed Shadowless and ShadowDirectiveInjector subclasses.

Closes dart-archive#1111
rkirov added a commit to rkirov/angular.dart that referenced this issue Aug 21, 2014
Breaking change: Regular (application) injectors cannot construct
DirectiveInjectors (DI). Only compilers create DI as part of view
creation process.

Deprecation: directive injector parent is now private. New public
method on dependency injector - parentGet, which allows to get through the
usual chain but skipping itself.

Component Injectors now break the resolution chain (except when called
directly.)

TestBed does not need DI in its constructor.

Internal changes:
- Application Injector reference is passed through view creation and
passed into new Directive Injector (instead of using
parentInjector.appInjector, which is wrong when used with ng-view).
- Unwind recursion from the directive injector.
- Remove EventListener from View.
- Replace DefaultDirectiveInjector with DirectiveInjector (with parent = null).
- Component visibility handled outside the visibility enum.
- Removed Shadowless and ShadowDirectiveInjector subclasses.

Closes dart-archive#1111
rkirov added a commit to rkirov/angular.dart that referenced this issue Aug 21, 2014
Breaking change: Regular (application) injectors cannot construct
DirectiveInjectors (DI). Only compilers create DI as part of view
creation process.

Deprecation: directive injector parent is now private. New public
method on dependency injector - parentGet, which allows to get through the
usual chain but skipping itself.

Component Injectors now break the resolution chain (except when called
directly.)

TestBed does not need DI in its constructor.

Internal changes:
- Application Injector reference is passed through view creation and
passed into new Directive Injector (instead of using
parentInjector.appInjector, which is wrong when used with ng-view).
- Unwind recursion from the directive injector.
- Remove EventListener from View.
- Replace DefaultDirectiveInjector with DirectiveInjector (with parent = null).
- Component visibility handled outside the visibility enum.
- Removed Shadowless and ShadowDirectiveInjector subclasses.

Closes dart-archive#1111
rkirov added a commit that referenced this issue Aug 21, 2014
Breaking change: Regular (application) injectors cannot construct
DirectiveInjectors (DI). Only compilers create DI as part of view
creation process.

Deprecation: directive injector parent is now private. New public
method on dependency injector - parentGet, which allows to get through the
usual chain but skipping itself.

TestBed does not need DI in its constructor.

Internal changes:
- Application Injector reference is passed through view creation and
passed into new Directive Injector (instead of using
parentInjector.appInjector, which is wrong when used with ng-view).
- Unwind recursion from the directive injector for performance.
- Remove EventListener from View.
- Replace DefaultDirectiveInjector with DirectiveInjector with parent = null.
- Component visibility handled outside the visibility enum.
- Removed Shadowless and ShadowDirectiveInjector subclasses.

Prepares for ComponentInjectors breaking the resolution chain, unless
directly called. Does not land that change because it is used by
clients.

Closes #1111
rkirov added a commit that referenced this issue Aug 22, 2014
BREAKING CHANGE:

Regular injectors (aka application injectors) can no longer be used to
retrieve DirectiveInjectors.  The compiler creates the Directive
Injector as part of view creation process.

DEPRECATION:
- DirectiveInjector's parent accessor is now private.  (The typically
  lookup chain as used by the Application Injectors doesn't work for
  Directive Injectors and it's probably wrong for application code to
  access the parent but see the next point.)
- There's a new public method on the DirectiveInjector - `parentGet`.
  With parentGet, you can request types from the parent injector.  Since
  DirectiveInjector.parent is private, you would rewrite
  `injector.parent.get(...)` → `injector.parentGet(...)`.

TestBed does not need DI in its constructor.

INTERNAL CHANGES:
- Application Injector reference is passed through view creation into
  the new Directive Injector (instead of using
  parentInjector.appInjector, which is wrong when used with ng-view).
- Unwind recursion from the directive injector for performance.
- Remove EventListener from View.
- Replace DefaultDirectiveInjector with a DirectiveInjector that has no
  parent.
- Component visibility handled outside the visibility enum.
- Removed Shadowless and ShadowDirectiveInjector subclasses.

Prepares for a future change in which ComponentInjectors break the
resolution chain unless called directly.

Closes #1111
@rkirov rkirov closed this as completed in 600113a Aug 22, 2014
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests

4 participants